<?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>230078</bug_id>
          
          <creation_ts>2021-09-08 20:20:15 -0700</creation_ts>
          <short_desc>Move some profiling to UnlinkedCodeBlock</short_desc>
          <delta_ts>2021-09-16 17:11:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>230358</dependson>
          <blocked>230316</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1791741</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-08 20:20:15 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792025</commentid>
    <comment_count>1</comment_count>
      <attachid>437766</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 12:24:57 -0700</bug_when>
    <thetext>Created attachment 437766
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792058</commentid>
    <comment_count>2</comment_count>
      <attachid>437774</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 13:17:47 -0700</bug_when>
    <thetext>Created attachment 437774
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792073</commentid>
    <comment_count>3</comment_count>
      <attachid>437778</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 13:55:23 -0700</bug_when>
    <thetext>Created attachment 437778
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792093</commentid>
    <comment_count>4</comment_count>
      <attachid>437787</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 14:32:26 -0700</bug_when>
    <thetext>Created attachment 437787
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792096</commentid>
    <comment_count>5</comment_count>
      <attachid>437788</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 14:40:42 -0700</bug_when>
    <thetext>Created attachment 437788
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792100</commentid>
    <comment_count>6</comment_count>
      <attachid>437790</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 14:51:59 -0700</bug_when>
    <thetext>Created attachment 437790
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792102</commentid>
    <comment_count>7</comment_count>
      <attachid>437791</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 14:54:19 -0700</bug_when>
    <thetext>Created attachment 437791
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792103</commentid>
    <comment_count>8</comment_count>
      <attachid>437778</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 14:55:22 -0700</bug_when>
    <thetext>Comment on attachment 437778
patch

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

r=me. I hope we will deploy 32bit pointers so that we do not have bunch of pointer width things in metadata.

&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:1069
&gt; +      profile: ValueProfile.*,

indentation looks wrong.

&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:1257
&gt;          iterationMetadata: IterationModeMetadata,
&gt; -        iterableProfile: ValueProfile,
&gt; +        iterableProfile: ValueProfile.*,
&gt;          callLinkInfo: LLIntCallLinkInfo,
&gt; -        iteratorProfile: ValueProfile,
&gt; +        iteratorProfile: ValueProfile.*,
&gt;          modeMetadata: GetByIdModeMetadata,
&gt; -        nextProfile: ValueProfile,
&gt; +        nextProfile: ValueProfile.*,

We should order these fields to make metadata small.

&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:1282
&gt;          iterationMetadata: IterationModeMetadata,
&gt; -        iterableProfile: ArrayProfile,
&gt; +        iterableProfile: ArrayProfile.*,
&gt;          callLinkInfo: LLIntCallLinkInfo,
&gt; -        nextResultProfile: ValueProfile,
&gt; +        nextResultProfile: ValueProfile.*,
&gt;          doneModeMetadata: GetByIdModeMetadata,
&gt; -        doneProfile: ValueProfile,
&gt; +        doneProfile: ValueProfile.*,
&gt;          valueModeMetadata: GetByIdModeMetadata,
&gt; -        valueProfile: ValueProfile,
&gt; +        valueProfile: ValueProfile.*,

Ditto.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:782
&gt; +        unsigned size = numberOfArgumentValueProfiles();
&gt; +        if (m_metadata) {
&gt; +#define COUNT(__op) \
&gt; +            size += m_metadata-&gt;numEntries&lt;__op&gt;();
&gt; +            FOR_EACH_OPCODE_WITH_VALUE_PROFILE(COUNT)
&gt; +#undef COUNT
&gt; +            size += m_metadata-&gt;numEntries&lt;OpIteratorOpen&gt;() * 3;
&gt; +            size += m_metadata-&gt;numEntries&lt;OpIteratorNext&gt;() * 3;
&gt; +        }
&gt; +
&gt; +        RELEASE_ASSERT(size);
&gt; +
&gt; +        auto&amp; valueProfiles = unlinkedCodeBlock-&gt;ensureValueProfiles(size);

Can we allocate it apriori when creating UnlinkedCodeBlock? The size won&apos;t be changed based on CodeBlock, so allocating that when UnlinkedCodeBlock is created is simpler.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:834
&gt; +        unsigned size = 0;
&gt; +
&gt; +        if (m_metadata) {
&gt; +#define COUNT(__op) \
&gt; +            size += m_metadata-&gt;numEntries&lt;__op&gt;();
&gt; +            FOR_EACH_OPCODE_WITH_ARRAY_PROFILE(COUNT)
&gt; +#undef COUNT
&gt; +            size += m_metadata-&gt;numEntries&lt;OpIteratorNext&gt;();
&gt; +        }
&gt; +
&gt; +        if (size) {
&gt; +            auto&amp; arrayProfiles = unlinkedCodeBlock-&gt;ensureArrayProfiles(size);
&gt; +            unsigned index = 0;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792111</commentid>
    <comment_count>9</comment_count>
      <attachid>437778</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 15:17:48 -0700</bug_when>
    <thetext>Comment on attachment 437778
patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:1069
&gt;&gt; +      profile: ValueProfile.*,
&gt; 
&gt; indentation looks wrong.

will fix.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.rb:1257
&gt;&gt; +        nextProfile: ValueProfile.*,
&gt; 
&gt; We should order these fields to make metadata small.

Will do.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:782
&gt;&gt; +        auto&amp; valueProfiles = unlinkedCodeBlock-&gt;ensureValueProfiles(size);
&gt; 
&gt; Can we allocate it apriori when creating UnlinkedCodeBlock? The size won&apos;t be changed based on CodeBlock, so allocating that when UnlinkedCodeBlock is created is simpler.

yeah, we can put this in `UnlinkedCodeBlockGenerator::finalize` per your suggestion on Slack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792121</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 15:34:14 -0700</bug_when>
    <thetext>Regarding the size of pointers. In the future, we could make these pointer fields an index into the profile vectors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792122</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 15:34:35 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #10)
&gt; Regarding the size of pointers. In the future, we could make these pointer
&gt; fields an index into the profile vectors.

That way, it&apos;d live in the bytecode instead of the metadata, and it&apos;d be smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792128</commentid>
    <comment_count>12</comment_count>
      <attachid>437796</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 15:52:59 -0700</bug_when>
    <thetext>Created attachment 437796
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792132</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-09 15:57:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/82947571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792443</commentid>
    <comment_count>14</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-10 10:47:40 -0700</bug_when>
    <thetext>I believe I found the crashers out. The issue is like this:

Say we have an UnlinkedCodeBlock UCB and two CodeBlocks that point to it, CB1 and CB2.

Let&apos;s say CB1 is in old space, and CB2 is in new space. CB1 doesn&apos;t run. But CB2 runs, and does some profiling, then dies.

Now CB1 points to some things. It&apos;s not dead, but it also wasn&apos;t visited. Therefore we won&apos;t finalize it.

So I&apos;ll have to adjust our finalization algorithm to finalize all live code blocks, not just all visited in this GC cycle code blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792646</commentid>
    <comment_count>15</comment_count>
      <attachid>437938</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-10 20:13:10 -0700</bug_when>
    <thetext>Created attachment 437938
WIP

This version fixes the GC issues, I believe (EWS will tell us). But it seems just a touch slower than the other version (with the GC bugs).

I&apos;m uploading this here while I try out a totally new version of a similar. I have an idea of a different way to share profiling, and see if it&apos;ll be a bigger win than we have now.

To resolve the GC issue, I had to teach the code to finalize UCBs that &quot;ran&quot; as CodeBlocks ran. I think this finalization costs us maybe 0.25% or so on Speedometer.

We still have a win overall though, but it&apos;s around 0.5-1% instead of a solid 1%. So we&apos;ll take this if the other version doesn&apos;t work out. But let&apos;s see if we can get back to a solid 1%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792992</commentid>
    <comment_count>16</comment_count>
      <attachid>438051</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-13 10:23:30 -0700</bug_when>
    <thetext>Created attachment 438051
WIP (alternate implementation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793114</commentid>
    <comment_count>17</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-13 15:04:41 -0700</bug_when>
    <thetext>Ok, the original implementation seems more performant than the simple implementation, unfortunately. But we&apos;ll go with what performs best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793128</commentid>
    <comment_count>18</comment_count>
      <attachid>438082</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-13 15:46:28 -0700</bug_when>
    <thetext>Created attachment 438082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793162</commentid>
    <comment_count>19</comment_count>
      <attachid>438082</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-13 17:10:49 -0700</bug_when>
    <thetext>Comment on attachment 438082
Patch

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

&gt; Source/JavaScriptCore/bytecode/ArrayProfile.cpp:170
&gt; +    JSGlobalObject* globalObject = lastSeenStructure-&gt;globalObject();
&gt; +    if (lexicalGlobalObject &amp;&amp; globalObject &amp;&amp; globalObject != lexicalGlobalObject)
&gt; +        m_observedDifferentGlobalObject = true;
&gt; +    if (globalObject
&gt; +        &amp;&amp; !globalObject-&gt;isOriginalArrayStructure(lastSeenStructure)

Hmm, I have a question.

Two CodeBlocks (&quot;A&quot; and &quot;B&quot;) from different JSGlobalObject can use the same UnlinkedCodeBlock at the same time. And in that case, it is possible that

1. &quot;A&quot; stores StructureID and JSGlobalObject to ArrayProfile
2. Getting prediction from &quot;B&quot;.

Then, &quot;B&quot; taints this profile as,

    m_observedDifferentGlobalObject = true
    m_usesOriginalArrayStructures = false

But this is not correct since &quot;A&quot; and &quot;B&quot; are using its own JSGlobalObject and using their original Arrays, correct?

And tainting this value can cause an effect on the result of DFG since it makes CheckStructure to CheckArray.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793165</commentid>
    <comment_count>20</comment_count>
      <attachid>438082</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-13 17:15:49 -0700</bug_when>
    <thetext>Comment on attachment 438082
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/ArrayProfile.cpp:170
&gt;&gt; +        &amp;&amp; !globalObject-&gt;isOriginalArrayStructure(lastSeenStructure)
&gt; 
&gt; Hmm, I have a question.
&gt; 
&gt; Two CodeBlocks (&quot;A&quot; and &quot;B&quot;) from different JSGlobalObject can use the same UnlinkedCodeBlock at the same time. And in that case, it is possible that
&gt; 
&gt; 1. &quot;A&quot; stores StructureID and JSGlobalObject to ArrayProfile
&gt; 2. Getting prediction from &quot;B&quot;.
&gt; 
&gt; Then, &quot;B&quot; taints this profile as,
&gt; 
&gt;     m_observedDifferentGlobalObject = true
&gt;     m_usesOriginalArrayStructures = false
&gt; 
&gt; But this is not correct since &quot;A&quot; and &quot;B&quot; are using its own JSGlobalObject and using their original Arrays, correct?
&gt; 
&gt; And tainting this value can cause an effect on the result of DFG since it makes CheckStructure to CheckArray.

Discussed with Saam, I missed that we are using globalObject from Structure instead of CodeBlock. So when setting m_usesOriginalArrayStructures, we don&apos;t care about Realm.
It is cared in DFG side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793172</commentid>
    <comment_count>21</comment_count>
      <attachid>438082</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-13 17:59:00 -0700</bug_when>
    <thetext>Comment on attachment 438082
Patch

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

r=me with one issue.

&gt; Source/JavaScriptCore/runtime/JSScope.cpp:84
&gt; +            catchScope.releaseAssertNoException();

Unfortunately, I think we can have TerminatedException.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793235</commentid>
    <comment_count>22</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-14 01:48:12 -0700</bug_when>
    <thetext>One of the failures EWS claims this introduces is:

Starting program: /home/igalia/xlopez/WebKit/WebKitBuild/Debug/bin/jsc --forceMiniVMMode=true -f JSTests/stress/has-own-property-name-cache-symbols-and-strings.js
[Thread debugging using libthread_db enabled]
Using host libthread_db library &quot;/lib/arm-linux-gnueabihf/libthread_db.so.1&quot;.
[New Thread 0xf3fc0440 (LWP 3478)]

Thread 1 &quot;jsc&quot; received signal SIGABRT, Aborted.
__libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
47	../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S: No such file or directory.
(gdb) bt
#0  __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
#1  0xf5e75ea0 in __libc_signal_restore_set (set=0xfffed324) at ../sysdeps/unix/sysv/linux/internal-signals.h:86
#2  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:48
#3  0xf5e667a2 in __GI_abort () at abort.c:79
#4  0xf6cc46f8 in JSC::ScratchRegisterAllocator::allocateScratch&lt;JSC::GPRInfo&gt; (this=0xfffed648) at ../../Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:97
#5  0xf6cbb558 in JSC::ScratchRegisterAllocator::allocateScratchGPR (this=0xfffed648) at ../../Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:102
#6  0xf62d9948 in JSC::AccessCase::generateImpl (this=0xf3699460, state=...) at ../../Source/JavaScriptCore/bytecode/AccessCase.cpp:2276
#7  0xf62d78b2 in JSC::AccessCase::generateWithGuard (this=0xf3699460, state=..., fallThrough=...) at ../../Source/JavaScriptCore/bytecode/AccessCase.cpp:1755
#8  0xf63b9862 in JSC::PolymorphicAccess::regenerate (this=0xf369cf80, locker=..., vm=..., globalObject=0xf20f9038, codeBlock=0xf1eac000, ecmaMode=..., stubInfo=...)
    at ../../Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:672
#9  0xf63e1720 in operator() (__closure=0xfffeec9c) at ../../Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:221
#10 0xf63e187a in JSC::StructureStubInfo::addAccessCase (this=0xf36f69a0, locker=..., globalObject=0xf20f9038, codeBlock=0xf1eac000, ecmaMode=..., ident=..., 
    accessCase=...) at ../../Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:245
#11 0xf6cb6b96 in JSC::tryCachePutBy (globalObject=0xf20f9038, codeBlock=0xf1eac000, baseValue=..., oldStructure=0xf1efb840, propertyName=..., slot=..., stubInfo=..., 
    putByKind=JSC::PutByKind::ByVal, putKind=JSC::PutKind::NotDirect) at ../../Source/JavaScriptCore/jit/Repatch.cpp:877
#12 0xf6cb6d56 in JSC::repatchPutBy (globalObject=0xf20f9038, codeBlock=0xf1eac000, baseValue=..., oldStructure=0xf1efb840, propertyName=..., slot=..., stubInfo=..., 
    putByKind=JSC::PutByKind::ByVal, putKind=JSC::PutKind::NotDirect) at ../../Source/JavaScriptCore/jit/Repatch.cpp:897
#13 0xf6c5a820 in JSC::putByValOptimize (globalObject=0xf20f9038, codeBlock=0xf1eac000, baseValue=..., subscript=..., value=..., stubInfo=0xf36f69a0, profile=0xf36e8e30, 
    ecmaMode=...) at ../../Source/JavaScriptCore/jit/JITOperations.cpp:1053
#14 0xf6c5a9d2 in JSC::operationPutByValNonStrictOptimize (globalObject=0xf20f9038, encodedBaseValue=-17416011648, encodedSubscript=-17415806464, encodedValue=-4294967271, 
    stubInfo=0xf36f69a0, profile=0xf36e8e30) at ../../Source/JavaScriptCore/jit/JITOperations.cpp:1085
#15 0xf35fd662 in ?? ()

Pretty sure this is bug #230215, we are working on a fix.

Trying to get a trace for the other failure, but it&apos;s also in a for-in test (for-in-cached.js in LayouTests/js), so I suspect something similar is going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793788</commentid>
    <comment_count>23</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-15 11:49:42 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #21)
&gt; Comment on attachment 438082 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=438082&amp;action=review
&gt; 
&gt; r=me with one issue.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSScope.cpp:84
&gt; &gt; +            catchScope.releaseAssertNoException();
&gt; 
&gt; Unfortunately, I think we can have TerminatedException.

Right. Spoke to Yusuke on Slack. We&apos;re going to use DeferTerminationForAWhile inside abstractAccess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793791</commentid>
    <comment_count>24</comment_count>
      <attachid>438270</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-15 11:54:51 -0700</bug_when>
    <thetext>Created attachment 438270
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793796</commentid>
    <comment_count>25</comment_count>
      <attachid>438270</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-15 12:09:50 -0700</bug_when>
    <thetext>Comment on attachment 438270
patch for landing

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

&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.cpp:58
&gt; +            buffer[i] = offset; // We align when we access this.

This fixes a bug that this patch exposes, where we would potentially think we had more metadata table entries than we really had in practice. This is because &quot;forEach&quot; used the next opcode&apos;s start pointer. That pointer is aligned to that opcode&apos;s metadata alignment. So that might make the previous opcode think it had an extra 1-7 entries (depending on size, alignment, etc). 

This patch fixes that by having the next opcode&apos;s start offset in the table always be the end offset of the previous opcode. This fixes the bug in forEach.

Then, when we access the metadata, we round up to alignment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793800</commentid>
    <comment_count>26</comment_count>
      <attachid>438274</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-15 12:21:26 -0700</bug_when>
    <thetext>Created attachment 438274
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793805</commentid>
    <comment_count>27</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-15 12:35:54 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #25)
&gt; Comment on attachment 438270 [details]
&gt; patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=438270&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.cpp:58
&gt; &gt; +            buffer[i] = offset; // We align when we access this.
&gt; 
&gt; This fixes a bug that this patch exposes, where we would potentially think
&gt; we had more metadata table entries than we really had in practice. This is
&gt; because &quot;forEach&quot; used the next opcode&apos;s start pointer. That pointer is
&gt; aligned to that opcode&apos;s metadata alignment. So that might make the previous
&gt; opcode think it had an extra 1-7 entries (depending on size, alignment,
&gt; etc). 
&gt; 
&gt; This patch fixes that by having the next opcode&apos;s start offset in the table
&gt; always be the end offset of the previous opcode. This fixes the bug in
&gt; forEach.
&gt; 
&gt; Then, when we access the metadata, we round up to alignment.

Another approach in the future would be to generate the opcodeIDs for byte codes in descending order of alignment. So all things with alignment 8 come first, followed by 4, 2, 1. That would then allow us to never align (and instead assert we&apos;re always aligned).

We could do that in the ruby code in two ways:
1. figure out the alignment somehow. Perhaps compile some dummy code and return alignof of dummy structs
2. Just specify in the ruby bytecodelist.rb what the alignment is (perhaps of type, or per each metadata). Then we&apos;d just have to keep that updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793876</commentid>
    <comment_count>28</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-15 15:19:03 -0700</bug_when>
    <thetext>Committed r282478 (241726@main): &lt;https://commits.webkit.org/241726@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438274.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794083</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-09-16 10:16:58 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 230358</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794086</commentid>
    <comment_count>30</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-16 10:23:56 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #29)
&gt; Re-opened since this is blocked by bug 230358

It was a speedup on Speedo2. But slowdown on JetStream2. Gonna see if the simple version of the patch in prior versions is a speedup or neutral everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794179</commentid>
    <comment_count>31</comment_count>
      <attachid>438391</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-16 13:08:36 -0700</bug_when>
    <thetext>Created attachment 438391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794180</commentid>
    <comment_count>32</comment_count>
      <attachid>438391</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-16 13:17:54 -0700</bug_when>
    <thetext>Comment on attachment 438391
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/ValueProfile.h:220
&gt; +struct UnlinkedValueProfile {

I think `class` is better in this case.

&gt; Source/JavaScriptCore/runtime/CachedTypes.cpp:2164
&gt; +    m_valueProfiles = FixedVector&lt;UnlinkedValueProfile&gt;(cachedCodeBlock.numValueProfiles());
&gt; +    m_arrayProfiles = FixedVector&lt;UnlinkedArrayProfile&gt;(cachedCodeBlock.numArrayProfiles());

Why not initializing them in the initializer list?

, m_valueProfiles(cachedCodeBlock.numValueProfiles())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794181</commentid>
    <comment_count>33</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-16 13:20:03 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #32)
&gt; Comment on attachment 438391 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=438391&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/ValueProfile.h:220
&gt; &gt; +struct UnlinkedValueProfile {
&gt; 
&gt; I think `class` is better in this case.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/CachedTypes.cpp:2164
&gt; &gt; +    m_valueProfiles = FixedVector&lt;UnlinkedValueProfile&gt;(cachedCodeBlock.numValueProfiles());
&gt; &gt; +    m_arrayProfiles = FixedVector&lt;UnlinkedArrayProfile&gt;(cachedCodeBlock.numArrayProfiles());
&gt; 
&gt; Why not initializing them in the initializer list?
&gt; 
&gt; , m_valueProfiles(cachedCodeBlock.numValueProfiles())

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794185</commentid>
    <comment_count>34</comment_count>
      <attachid>438393</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-16 13:29:19 -0700</bug_when>
    <thetext>Created attachment 438393
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794209</commentid>
    <comment_count>35</comment_count>
      <attachid>438403</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-16 14:32:58 -0700</bug_when>
    <thetext>Created attachment 438403
[fast-cq] patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794280</commentid>
    <comment_count>36</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-16 17:11:31 -0700</bug_when>
    <thetext>Committed r282621 (241779@main): &lt;https://commits.webkit.org/241779@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438403.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437766</attachid>
            <date>2021-09-09 12:24:57 -0700</date>
            <delta_ts>2021-09-09 13:17:47 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>85943</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUu
Y3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDE3ICsxMTgsMTggQEAgdm9p
ZCBkdW1wQXJyYXlNb2RlcyhQcmludFN0cmVhbSYgb3V0LCBBcgogICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJCaWdVaW50NjRBcnJheU1vZGUiKTsKIH0KIAotdm9pZCBBcnJheVByb2ZpbGU6OmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCit2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0
cnVjdHVyZUlEKQorICAgIFN0cnVjdHVyZUlEIGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOwor
ICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3RT
ZWVuU3RydWN0dXJlID0gY29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
bV9sYXN0U2VlblN0cnVjdHVyZUlEKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyLCBjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RT
ZWVuU3RydWN0dXJlID0gY29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
aWQpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIGxhc3RTZWVuU3Ry
dWN0dXJlKTsKICAgICBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCi12b2lkIEFycmF5
UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQor
dm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkKIHsKICAgICBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBhcnJheU1vZGVzRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7
CiAgICAgCkBAIC0xNjMsMTMgKzE2NCwxMyBAQCB2b2lkIEFycmF5UHJvZmlsZTo6b2JzZXJ2ZUlu
ZGV4ZWRSZWFkKFZNCiAgICAgfQogfQogCi1DU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNj
cmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbihDb2RlQmxvY2sq
IGNvZGVCbG9jaykKIHsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2Rl
QmxvY2spOwotICAgIHJldHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGxvY2tl
cik7CisgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jayk7CisgICAgcmV0dXJu
IGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsKIH0KIAotQ1N0cmluZyBBcnJheVBy
b2ZpbGU6OmJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJikKK0NTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVw
ZGF0aW5nKCkKIHsKICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgQ29tbWFQcmludGVy
IGNvbW1hOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsMjIgKzIxNywyMiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlSUQoU3RydWN0dXJlSUQgc3RydWN0dXJl
SUQpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7IH0KICAgICB2b2lkIG9i
c2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsgbV9sYXN0U2VlblN0cnVjdHVy
ZUlEID0gc3RydWN0dXJlLT5pZCgpOyB9CiAKLSAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKLSAgICB2b2lkIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICB2b2lkIGNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihDb2RlQmxvY2sqKTsKKyAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAg
ICB2b2lkIG9ic2VydmVBcnJheU1vZGUoQXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzIHw9IG1vZGU7IH0KICAgICB2b2lkIG9ic2VydmVJbmRleGVkUmVhZChWTSYsIEpTQ2Vs
bCosIHVuc2lnbmVkIGluZGV4KTsKIAotICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVz
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzOyB9Ci0gICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXM7IH0KKyAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2RlcygpIGNvbnN0IHsgcmV0
dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CisgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVk
QWNjZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlczsg
fQogICAgIAotICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JikgY29uc3QgeyByZXR1cm4gbV9tYXlTdG9yZVRvSG9sZTsgfQotICAgIGJvb2wgb3V0T2ZCb3Vu
ZHMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9vdXRPZkJvdW5k
czsgfQorICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoKSBjb25zdCB7IHJldHVybiBtX21heVN0b3Jl
VG9Ib2xlOyB9CisgICAgYm9vbCBvdXRPZkJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZC
b3VuZHM7IH0KICAgICAKLSAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX3VzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlczsgfQorICAgIGJvb2wgdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KIAotICAgIENTdHJp
bmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sq
KTsKLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJik7CisgICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uKENvZGVCbG9j
ayopOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZygpOwogICAg
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgb3AgOmdldF9hcmd1
bWVudCwKICAgICAgICAgaW5kZXg6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6YXJndW1lbnRfY291bnQsCkBAIC0xODMsNyArMTgzLDcgQEAgb3Ag
OnRvX3RoaXMsCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0
cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywKLSAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwK
ICAgICB9CiAKIG9wIDpjaGVja190ZHosCkBAIC0zMDksNyArMzA5LDcgQEAgb3BfZ3JvdXAgOlZh
bHVlUHJvZmlsZWRCaW5hcnlPcCwKICAgICAgICAgcmhzOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUKKyAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLioKICAgICB9CiAKIG9wIDpiaXRub3QsCkBAIC0zMTgs
NyArMzE4LDcgQEAgb3AgOmJpdG5vdCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
CisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcF9ncm91cCA6VW5h
cnlPcCwKQEAgLTM2Myw3ICszNjMsNyBAQCBvcCA6dG9fb2JqZWN0LAogICAgICAgICBtZXNzYWdl
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBv
cF9ncm91cCA6VmFsdWVQcm9maWxlZFVuYXJ5T3AsCkBAIC0zNzYsNyArMzc2LDcgQEAgb3BfZ3Jv
dXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0
ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOm5lZ2F0
ZSwKQEAgLTQ0NSw3ICs0NDUsNyBAQCBvcCA6aW5fYnlfdmFsLAogICAgICAgICBwcm9wZXJ0eTog
VmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQ
cm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6aW5fYnlfaWQsCkBAIC00NzcsNyArNDc3LDggQEAgb3AgOmdldF9i
eV9pZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0
QnlJZE1vZGVNZXRhZGF0YSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpnZXRfYnlfaWRfd2l0aF90aGlzLApAQCAtNDg4LDcgKzQ4
OSw3IEBAIG9wIDpnZXRfYnlfaWRfd2l0aF90aGlzLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWdu
ZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmdldF9i
eV92YWxfd2l0aF90aGlzLApAQCAtNDk5LDcgKzUwMCw3IEBAIG9wIDpnZXRfYnlfdmFsX3dpdGhf
dGhpcywKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmls
ZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX2RpcmVjdCwKQEAgLTUw
OSw3ICs1MTAsNyBAQCBvcCA6Z2V0X2J5X2lkX2RpcmVjdCwKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLCAjIG5vdCB1c2VkIGluIGxsaW50CisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmls
ZS4qLCAjIG5vdCB1c2VkIGluIGxsaW50CiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICB9CkBAIC01MjAsNyArNTIxLDcgQEAg
b3AgOmdldF9wcm90b3R5cGVfb2YsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnRyeV9nZXRfYnlf
aWQsCkBAIC01MzAsNyArNTMxLDcgQEAgb3AgOnRyeV9nZXRfYnlfaWQsCiAgICAgICAgIHByb3Bl
cnR5OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6
IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQog
CiBvcCA6cHV0X2J5X2lkLApAQCAtNTcxLDggKzU3Miw4IEBAIG9wIDpnZXRfYnlfdmFsLAogICAg
ICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsK
LSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgICAgICBhcnJheVByb2ZpbGU6IEFy
cmF5UHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIHNlZW5JZGVudGlmaWVyczogR2V0
QnlWYWxIaXN0b3J5LAogICAgIH0KIApAQCAtNTgzLDcgKzU4NCw3IEBAIG9wIDpnZXRfcHJpdmF0
ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAg
bWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICAgICAgc3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAog
ICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAogICAgICAgICBwcm9wZXJ0eTogV3JpdGVCYXJyaWVy
W0pTQ2VsbF0sCkBAIC02MzIsNyArNjMzLDcgQEAgb3AgOnB1dF9ieV92YWwsCiAgICAgICAgIGVj
bWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgIH0KIAogb3AgOnB1dF9ieV92YWxfd2l0aF90aGlzLApAQCAtNjUyLDcgKzY1Myw3
IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6
ZGVsX2J5X3ZhbCwKQEAgLTg0Miw3ICs4NDMsNyBAQCBvcCA6Y2FsbCwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6dGFpbF9jYWxsLApAQCAtODU0LDcgKzg1NSw3IEBAIG9wIDp0YWls
X2NhbGwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExM
SW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmNhbGxfZXZhbCwKQEAgLTg2
Nyw3ICs4NjgsNyBAQCBvcCA6Y2FsbF9ldmFsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAg
ICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAK
IG9wIDpjYWxsX3ZhcmFyZ3MsCkBAIC04ODAsOCArODgxLDggQEAgb3AgOmNhbGxfdmFyYXJncywK
ICAgICAgICAgZmlyc3RWYXJBcmc6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBhcmdD
b3VudEluY2x1ZGluZ1RoaXM6IHVuc2lnbmVkLApAQCAtOTAxLDggKzkwMiw4IEBAIG9wIDp0YWls
X2NhbGxfdmFyYXJncywKICAgICAgICAgZmlyc3RWYXJBcmc6IGludCwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAotICAgICAgICBw
cm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczog
ewogICAgICAgICBhcmdDb3VudEluY2x1ZGluZ1RoaXM6IHVuc2lnbmVkCkBAIC05MjIsOCArOTIz
LDggQEAgb3AgOnRhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywKICAgICAgICAgZmlyc3RWYXJB
cmc6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmls
ZS4qLAogICAgIH0KIAogb3AgOmNvbnN0cnVjdCwKQEAgLTkzNSw3ICs5MzYsNyBAQCBvcCA6Y29u
c3RydWN0LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZvOiBM
TEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3RfdmFyYXJn
cywKQEAgLTk0OCw4ICs5NDksOCBAQCBvcCA6Y29uc3RydWN0X3ZhcmFyZ3MsCiAgICAgICAgIGZp
cnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVBy
b2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRp
bmdUaGlzOiB1bnNpZ25lZApAQCAtMTAyOCw3ICsxMDI5LDcgQEAgb3AgOmdldF9mcm9tX3Njb3Bl
LAogICAgICAgICAgICAgc3RydWN0dXJlOiBXcml0ZUJhcnJpZXJCYXNlW1N0cnVjdHVyZV0sCiAg
ICAgICAgIH0sCiAgICAgICAgIG9wZXJhbmQ6IHVpbnRwdHJfdCwgI29mZnNldCA2Ci0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwgIyBvZmZzZXQgNworICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwgIyBvZmZzZXQgNwogICAgIH0sCiAgICAgbWV0YWRhdGFfaW5pdGlhbGl6ZXJz
OiB7CiAgICAgICAgIGdldFB1dEluZm86IDpnZXRQdXRJbmZvLApAQCAtMTA2NSw3ICsxMDY2LDcg
QEAgb3AgOmdldF9mcm9tX2FyZ3VtZW50cywKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6cHV0X3RvX2FyZ3VtZW50
cywKQEAgLTExNzMsNyArMTE3NCw3IEBAIG9wIDplbnVtZXJhdG9yX25leHQsCiAgICAgICAgIGVu
dW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFy
cmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRh
ZGF0YSwKICAgICB9CiAKQEAgLTExODcsOCArMTE4OCw4IEBAIG9wIDplbnVtZXJhdG9yX2dldF9i
eV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAg
IG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4q
LAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJh
dG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyMDIsNyArMTIw
Myw3IEBAIG9wIDplbnVtZXJhdG9yX2luX2J5X3ZhbCwKICAgICAgICAgZW51bWVyYXRvcjogVmly
dHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9m
aWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLios
CiAgICAgICAgIGVudW1lcmF0b3JNZXRhZGF0YTogRW51bWVyYXRvck1ldGFkYXRhLAogICAgIH0K
IApAQCAtMTIxNiw3ICsxMjE3LDcgQEAgb3AgOmVudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSwK
ICAgICAgICAgZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIGVudW1lcmF0b3JNZXRhZGF0YTogRW51
bWVyYXRvck1ldGFkYXRhLAogICAgIH0KIApAQCAtMTI0OSwxMSArMTI1MCwxMSBAQCBvcCA6aXRl
cmF0b3Jfb3BlbiwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGl0ZXJhdGlvbk1l
dGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAog
ICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBpdGVyYXRv
clByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgaXRlcmF0b3JQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAotICAg
ICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBuZXh0UHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgfSwKICAgICBjaGVja3BvaW50czogewogICAgICAgICBzeW1ib2xD
YWxsOiBuaWwsCkBAIC0xMjcyLDEzICsxMjczLDEzIEBAIG9wIDppdGVyYXRvcl9uZXh0LAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YSwKLSAgICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisg
ICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIGNhbGxMaW5r
SW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1
ZVByb2ZpbGUsCisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAg
ICAgICAgZG9uZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKLSAgICAgICAgZG9u
ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmls
ZS4qLAogICAgICAgICB2YWx1ZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKLSAg
ICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHZhbHVlUHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIG5leHRSZXN1bHQ6
IEpTVmFsdWUsCkBAIC0xMzIyLDcgKzEzMjMsNyBAQCBvcCA6Z2V0X2ludGVybmFsX2ZpZWxkLAog
ICAgICAgICBpbmRleDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4q
LAogICAgIH0KIAogb3AgOnB1dF9pbnRlcm5hbF9maWVsZCwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9y
Q2hlY2twb2ludC5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTcsMjAgKzU3LDIwIEBAIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9ySW1wbChCeXRl
Y28KICAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKICAgICBpZiBjb25zdGV4cHIg
KEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4pIHsKICAgICAg
ICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Bl
bjo6c3ltYm9sQ2FsbDogcmV0dXJuICZtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZTsKLSAgICAg
ICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRQ
cm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4g
bWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46
OmdldE5leHQ6IHJldHVybiBtZXRhZGF0YS5tX25leHRQcm9maWxlOwogICAgICAgICBkZWZhdWx0
OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKICAgICB9IGVsc2Ug
aWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9u
ZXh0KSB7CiAgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0gICAgICAgIGNhc2Ug
T3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1fbmV4dFJlc3Vs
dFByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiAm
bWV0YWRhdGEubV9kb25lUHJvZmlsZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0
VmFsdWU6IHJldHVybiAmbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJ
dGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gbWV0YWRhdGEubV9uZXh0UmVzdWx0UHJv
ZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0dXJuIG1ldGFk
YXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVl
OiByZXR1cm4gbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CiAgICAgICAgIGRlZmF1bHQ6IFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgCi0gICAgICAg
IHJldHVybiAmbWV0YWRhdGEubV9wcm9maWxlOworICAgICAgICByZXR1cm4gbWV0YWRhdGEubV9w
cm9maWxlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRhPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNiArMzc0LDEwIEBAIENvZGVCbG9jazo6Q29kZUJsb2Nr
KFZNJiB2bSwgU3RydWN0dXJlKiAKIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrLAogICAgIEpTU2NvcGUqIHNjb3BlKQogeworICAgIC8vIFdlIGNh
bid0IGZpbmFsaXplIGEgR0Mgd2hpbGUgaW4gaGVyZSBzaW5jZSB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB0bworICAgIC8vIG1ha2Ugc3VyZSBvdXIgVmFsdWVQcm9maWxlcyBhbGwgcG9pbnQgdG8gcHJv
cGVyIGxvY2F0aW9ucy4KKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7
IAorCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIGZpbmlzaENyZWF0aW9uQ29t
bW9uKHZtKTsKIApAQCAtNDM1LDcgKzQzOSw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFMKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBt
b2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0
cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIGF1dG8gbGlua19wcm9m
aWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8s
IGF1dG8mIC8qbWV0YWRhdGEqLykgeworICAgIGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0
IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8mIG1ldGFkYXRh
KSB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8VmFsdWVQcm9maWxlKiwg
ZGVjbHR5cGUobWV0YWRhdGEubV9wcm9maWxlKT4pOwogICAgICAgICBtX251bWJlck9mTm9uQXJn
dW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgfTsKIApAQCAtNDk5LDkgKzUwNCw5IEBAIGJvb2wg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAgICAgICBMSU5LKE9wR2V0
QnlJZCwgcHJvZmlsZSkKIAotICAgICAgICBMSU5LKE9wRW51bWVyYXRvck5leHQsIHByb2ZpbGUp
Ci0gICAgICAgIExJTksoT3BFbnVtZXJhdG9ySW5CeVZhbCwgcHJvZmlsZSkKLSAgICAgICAgTElO
SyhPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEVu
dW1lcmF0b3JOZXh0KQorICAgICAgICBMSU5LKE9wRW51bWVyYXRvckluQnlWYWwpCisgICAgICAg
IExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpCiAgICAgICAgIExJTksoT3BFbnVtZXJh
dG9yR2V0QnlWYWwsIHByb2ZpbGUpCiAKICAgICAgICAgTElOSyhPcENhbGwsIHByb2ZpbGUpCkBA
IC03NjEsNiArNzY2LDEwMyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksKIAorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgc2l6ZSA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7CisgICAgICAgIGlm
IChtX21ldGFkYXRhKSB7CisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgICAgIHNpemUg
Kz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOworICAgICAgICAgICAgRk9SX0VBQ0hf
T1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAgICAg
ICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVuPigpICogMzsK
KyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yTmV4
dD4oKSAqIDM7CisgICAgICAgIH0KKworCisgICAgICAgIGJvb2wgZGlkQWxsb2NhdGUgPSBmYWxz
ZTsKKyAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jay0+bV92YWx1ZVByb2ZpbGVzLnNpemUo
KSAmJiBzaXplKSB7CisgICAgICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+bV92YWx1ZVByb2Zp
bGVzID0gRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPihzaXplKTsKKyAgICAgICAgICAgIGRpZEFs
bG9jYXRlID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKKyAgICAgICAgICAgICAgICB2YWx1
ZVByb2ZpbGVGb3JBcmd1bWVudChpKS5jbGVhckJ1Y2tldHMoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKTsgLy8g
VGhlIGZpcnN0IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCkgcHJvZmlsZXMgYXJlIGFy
Z3VtZW50IHZhbHVlIHByb2ZpbGVzCisKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyAgICAg
ICAgICAgIGF1dG8gYXNzaWduID0gWyZdIChWYWx1ZVByb2ZpbGUqJiBwcm9maWxlKSB7CisgICAg
ICAgICAgICAgICAgcHJvZmlsZSA9ICZ1bmxpbmtlZENvZGVCbG9jay0+bV92YWx1ZVByb2ZpbGVz
W2luZGV4KytdOworCisgICAgICAgICAgICAgICAgaWYgKCFkaWRBbGxvY2F0ZSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBUaGVzZSBWYWx1ZVByb2ZpbGVzIGNvdWxkIGJlIHN0YWxlLCBzaW5j
ZSBVbmxpbmtlZENvZGVCbG9jayBkb2Vzbid0IHZpc2l0CisgICAgICAgICAgICAgICAgICAgIC8v
IHRoZW0gaW4gYW55IHdheS4gU28gdGhleSBjb3VsZCBiZSBseWluZyBhcm91bmQgZnJvbSB3aGVu
IHNvbWUgcHJpb3IgQ29kZUJsb2NrCisgICAgICAgICAgICAgICAgICAgIC8vIHdhcyBleGVjdXRp
bmcsIGJ1dCBkaWVkIGFmdGVyIHN0b3JpbmcgdG8gdGhlbS4gU28gdG8gYmUgY29uc2VydmF0aXZl
LCB3ZSBjbGVhcgorICAgICAgICAgICAgICAgICAgICAvLyBhbnkgdW5wcm9jZXNzZWQgdmFsdWVz
IG5vdy4KKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y2xlYXJCdWNrZXRzKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworI2RlZmluZSBWSVNJVChfX29wKSBcCisg
ICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsgYXNzaWduKG1ldGFkYXRhLm1fcHJvZmlsZSk7IH0pOworICAgICAgICAgICAgRk9SX0VBQ0hf
T1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKKyN1bmRlZiBWSVNJVAorCisgICAgICAg
ICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JPcGVuPihbJl0gKGF1dG8mIG1ldGFk
YXRhKSB7IAorICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmls
ZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlKTsK
KyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9uZXh0UHJvZmlsZSk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4
dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0
YS5tX25leHRSZXN1bHRQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEu
bV9kb25lUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fdmFsdWVQ
cm9maWxlKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNF
X0FTU0VSVChpbmRleCA9PSBzaXplKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIHVuc2lnbmVk
IHNpemUgPSAwOworCisgICAgICAgIGlmIChtX21ldGFkYXRhKSB7CisjZGVmaW5lIENPVU5UKF9f
b3ApIFwKKyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigp
OworICAgICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfQVJSQVlfUFJPRklMRShDT1VOVCkK
KyN1bmRlZiBDT1VOVAorICAgICAgICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVz
PE9wSXRlcmF0b3JOZXh0PigpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBkaWRBbGxvY2F0
ZSA9IGZhbHNlOworICAgICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrLT5tX2FycmF5UHJvZmls
ZXMuc2l6ZSgpICYmIHNpemUpIHsKKyAgICAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT5tX2Fy
cmF5UHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxBcnJheVByb2ZpbGU+KHNpemUpOworICAgICAgICAg
ICAgZGlkQWxsb2NhdGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNpemUpIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgIGF1dG8gYXNzaWdu
ID0gWyZdIChBcnJheVByb2ZpbGUqJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgcHJvZmls
ZSA9ICZ1bmxpbmtlZENvZGVCbG9jay0+bV9hcnJheVByb2ZpbGVzW2luZGV4KytdOworICAgICAg
ICAgICAgICAgIC8vIFNlZSBjb21tZW50IGFib3ZlIGFib3V0IHdoeSB3ZSBjbGVhciBvdXQgc3Rh
bGUgdmFsdWVzIGluIHZhbHVlIHByb2ZpbGVzLgorICAgICAgICAgICAgICAgIC8vIFdlIGRvIHRo
ZSBhbmFsb2dvdXMgdGhpbmcgaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAg
ICAgIHByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICB9Owor
CisjZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBhc3NpZ24obWV0YWRhdGEubV9hcnJheVByb2Zp
bGUpOyB9KTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUo
VklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxP
cEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgICAgIGFz
c2lnbihtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc2l6ZSk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aENvbnRyb2xGbG93UHJv
ZmlsZXJPcGNvZGVzKCkpCiAgICAgICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29u
dHJvbEZsb3dQcm9maWxlcigpOwogCkBAIC05MjgsOCArMTAzMCw2IEBAIHZvaWQgQ29kZUJsb2Nr
OjpzZXRBbHRlcm5hdGl2ZShWTSYgdm0sIEMKIHZvaWQgQ29kZUJsb2NrOjpzZXROdW1QYXJhbWV0
ZXJzKHVuc2lnbmVkIG5ld1ZhbHVlKQogewogICAgIG1fbnVtUGFyYW1ldGVycyA9IG5ld1ZhbHVl
OwotCi0gICAgbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxWYWx1ZVByb2Zp
bGU+KE9wdGlvbnM6OnVzZUpJVCgpID8gbmV3VmFsdWUgOiAwKTsKIH0KIAogQ29kZUJsb2NrKiBD
b2RlQmxvY2s6OnNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCkKQEAgLTI3NzMsNyArMjg3Myw3
IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUKICAgICBzd2l0Y2gg
KGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CiAjZGVmaW5lIENBU0UxKE9wKSBcCiAgICAgY2Fz
ZSBPcDo6b3Bjb2RlSUQ6IFwKLSAgICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCku
bWV0YWRhdGEodGhpcykubV9hcnJheVByb2ZpbGU7CisgICAgICAgIHJldHVybiBpbnN0cnVjdGlv
bi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9hcnJheVByb2ZpbGU7CiAKICNkZWZpbmUgQ0FT
RTIoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXApAQCAtMjc4NSwxMyArMjg4NSw2IEBA
IEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUKICN1bmRlZiBDQVNFMQog
I3VuZGVmIENBU0UyCiAKLSAgICBjYXNlIE9wR2V0QnlJZDo6b3Bjb2RlSUQ6IHsKLSAgICAgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0gICAgICAgIGlmIChtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkKLSAg
ICAgICAgICAgIHJldHVybiAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTI5MDAsMTkgKzI5OTMsMTkgQEAgdm9pZCBDb2RlQmxvY2s6
OnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZQogICAgICAgICAgICAgbnVtU2FtcGxlcyA9IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyAvLyBXZSBkb24ndCB3YW50IHByb2ZpbGVzIHRoYXQg
YXJlIGV4dHJlbWVseSBob3QgdG8gYmUgZ2l2ZW4gbW9yZSB3ZWlnaHQuCiAgICAgICAgIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMgKz0gbnVtU2FtcGxlczsKICAgICAgICAgaWYgKGlzQXJndW1l
bnQpIHsKLSAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cik7CisgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm9maWxlLm51bWJlck9m
U2FtcGxlcygpIHx8IHByb2ZpbGUuaXNTYW1wbGVkQmVmb3JlKCkpCiAgICAgICAgICAgICBudW1i
ZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKLSAgICAgICAgcHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24oKTsKICAgICB9KTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAgICAg
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDYXRjaD4oWyZdKGF1dG8mIG1ldGFkYXRhKSB7CiAg
ICAgICAgICAgICBpZiAobWV0YWRhdGEubV9idWZmZXIpIHsKICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX2J1ZmZlci0+Zm9yRWFjaChbJl0oVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVy
JiBwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0pOwpAQCAtMjkzMSwxMCArMzAyNCw4IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxWYWx1ZVByb2ZpbGVQcmUKIAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGlj
dGlvbnMoKQogewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAK
ICAgICBmb3JFYWNoQXJyYXlQcm9maWxlKFsmXShBcnJheVByb2ZpbGUmIHByb2ZpbGUpIHsKLSAg
ICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCB0aGlzKTsKKyAg
ICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24odGhpcyk7CiAgICAgfSk7CiAg
ICAgCiAgICAgZm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUoWyZdKEFycmF5QWxsb2NhdGlv
blByb2ZpbGUmIHByb2ZpbGUpIHsKQEAgLTMxNjQsNyArMzI1NSw3IEBAIFZhbHVlUHJvZmlsZSog
Q29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2YKIAogI2RlZmluZSBDQVNFKE9wKSBcCiAgICAgY2Fz
ZSBPcDo6b3Bjb2RlSUQ6IFwKLSAgICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCku
bWV0YWRhdGEodGhpcykubV9wcm9maWxlOworICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24tPmFz
PE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsKIAogICAgICAgICBGT1JfRUFDSF9PUENP
REVfV0lUSF9WQUxVRV9QUk9GSUxFKENBU0UpCiAKQEAgLTMxODEsMTAgKzMyNzIsMTAgQEAgVmFs
dWVQcm9maWxlKiBDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZgogICAgIH0KIH0KIAotU3BlY3Vs
YXRlZFR5cGUgQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRl
eChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4KQorU3BlY3VsYXRlZFR5cGUgQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9u
Rm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgaWYg
KFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlID0gdHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+Y29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHJldHVybiB2YWx1ZVByb2Zp
bGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgIHJldHVybiBTcGVjTm9uZTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2
aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzQsMTkgKzQ3NCwxNiBAQCBwdWJsaWM6CiAKICAgICB1
bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpCiAgICAgewotICAgICAgICBB
U1NFUlQobV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX251bVBhcmFtZXRlcnMpIHx8ICFPcHRpb25zOjp1c2VKSVQoKSk7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50VmFsdWVQcm9maWxlcy5zaXplKCk7CisgICAgICAgIHJldHVybiBudW1Q
YXJhbWV0ZXJzKCk7CiAgICAgfQogCiAgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JB
cmd1bWVudCh1bnNpZ25lZCBhcmd1bWVudEluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKE9w
dGlvbnM6OnVzZUpJVCgpKTsgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSB2YXJpb3Vz
IEpJVCBjb21waWxlcnMgb3IgcGxhY2VzIHRoYXQgZmlyc3QgY2hlY2sgbnVtYmVyT2ZBcmd1bWVu
dFZhbHVlUHJvZmlsZXMgYmVmb3JlIGNhbGxpbmcgdGhpcy4KLSAgICAgICAgVmFsdWVQcm9maWxl
JiByZXN1bHQgPSBtX2FyZ3VtZW50VmFsdWVQcm9maWxlc1thcmd1bWVudEluZGV4XTsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrKCktPm1f
dmFsdWVQcm9maWxlc1thcmd1bWVudEluZGV4XTsKICAgICB9CiAKICAgICBWYWx1ZVByb2ZpbGUm
IHZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7Ci0gICAgU3BlY3Vs
YXRlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7CisgICAgU3BlY3VsYXRlZFR5cGUgdmFs
dWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hWYWx1ZVByb2ZpbGUoY29u
c3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFj
aEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJik7CkBAIC0xMDE1LDcgKzEwMTIsNiBAQCBwcml2
YXRlOgogICAgIC8vIGZvciBERkcgY29kZSBibG9ja3MuCiAgICAgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzOwogI2VuZGlm
Ci0gICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9maWxlczsK
IAogICAgIC8vIENvbnN0YW50IFBvb2wKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVnaXN0
ZXIpID09IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBSZWdpc3Rlcl9tdXN0X2JlX3Nh
bWVfc2l6ZV9hc19Xcml0ZUJhcnJpZXJfVW5rbm93bik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDI4MjE4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMiBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFj
aFZhbHVlUHJvZmlsZShjb25zCiAKICAgICBpZiAobV9tZXRhZGF0YSkgewogI2RlZmluZSBWSVNJ
VChfX29wKSBcCi0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKKyAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMoKm1l
dGFkYXRhLm1fcHJvZmlsZSwgZmFsc2UpOyB9KTsKIAogICAgICAgICBGT1JfRUFDSF9PUENPREVf
V0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKIAogICAgICAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JPcGVuPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IAot
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgZmFsc2UpOwotICAg
ICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSwgZmFsc2UpOwotICAgICAg
ICAgICAgZnVuYyhtZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBm
dW5jKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVu
YygqbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMo
Km1ldGFkYXRhLm1fbmV4dFByb2ZpbGUsIGZhbHNlKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7
Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fZG9uZVByb2ZpbGUsIGZhbHNlKTsKLSAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV92YWx1ZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAg
IGZ1bmMoKm1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAg
IGZ1bmMoKm1ldGFkYXRhLm1fZG9uZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMo
Km1ldGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7CiAgICAgICAgIH0pOwogICAgIH0gICAK
IApAQCAtNjQsMTMgKzY0LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29k
ZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7CiAgICAg
aWYgKG1fbWV0YWRhdGEpIHsKLSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+
KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkKLSAgICAgICAgICAgICAg
ICBmdW5jKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2Zp
bGUpOwotICAgICAgICB9KTsKLQogI2RlZmluZSBWSVNJVDEoX19vcCkgXAotICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlKTsgfSk7CisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1
dG8mIG1ldGFkYXRhKSB7IGZ1bmMoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKTsgfSk7CiAKICNk
ZWZpbmUgVklTSVQyKF9fb3ApIFwKICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJv
ZmlsZSk7IH0pOwpAQCAtODIsNyArNzcsNyBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5
UHJvZmlsZShjb25zCiAjdW5kZWYgVklTSVQyCiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgZnVu
YyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0
YS5tX2l0ZXJhYmxlUHJvZmlsZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgJKHJldmlz
aW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0
YWRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDYgQEAgc3RydWN0IEdldEJ5SWRN
b2RlTWV0YWRhdGFVbnNldCB7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVN
ZXRhZGF0YVVuc2V0KSA9PSAxMik7CiAKLXN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlM
ZW5ndGggewotICAgIEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGU7Ci19Owotc3RhdGljX2Fzc2Vy
dChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoKSA9PSAxMik7Ci0KIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHsKICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1
cmVJRDsKICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQ7CkBAIC05MCw3ICs4NSw2IEBA
IHVuaW9uIEdldEJ5SWRNb2RlTWV0YWRhdGEgewogICAgIH07CiAgICAgR2V0QnlJZE1vZGVNZXRh
ZGF0YURlZmF1bHQgZGVmYXVsdE1vZGU7CiAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVVuc2V0IHVu
c2V0TW9kZTsKLSAgICBHZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5ndGhN
b2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFQcm90b0xvYWQgcHJvdG9Mb2FkTW9kZTsKIH07
CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhKSA9PSAxNik7CkBAIC0x
MTMsNyArMTA3LDYgQEAgc3RydWN0IEdldEJ5SWRNb2RlTWV0YWRhdGEgewogICAgIHVuaW9uIHsK
ICAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YURlZmF1bHQgZGVmYXVsdE1vZGU7CiAgICAgICAg
IEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCB1bnNldE1vZGU7Ci0gICAgICAgIEdldEJ5SWRNb2Rl
TWV0YWRhdGFBcnJheUxlbmd0aCBhcnJheUxlbmd0aE1vZGU7CiAgICAgICAgIEdldEJ5SWRNb2Rl
TWV0YWRhdGFQcm90b0xvYWQgcHJvdG9Mb2FkTW9kZTsKICAgICB9OwogICAgIEdldEJ5SWRNb2Rl
IG1vZGU7CkBAIC0xMzcsNyArMTMwLDYgQEAgaW5saW5lIHZvaWQgR2V0QnlJZE1vZGVNZXRhZGF0
YTo6c2V0VW5zZQogaW5saW5lIHZvaWQgR2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJyYXlMZW5n
dGhNb2RlKCkKIHsKICAgICBtb2RlID0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoOwotICAgIG5l
dyAoJmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpIEFycmF5UHJvZmlsZTsKICAgICAvLyBQ
cmV2ZW50IHRoZSBwcm90b3R5cGUgY2FjaGUgZnJvbSBldmVyIGhhcHBlbmluZy4KICAgICBoaXRD
b3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHJl
dmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiBDb21wcmVzc2Vk
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6On5Db21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXIoKSB7IH0KIAotdm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiBsb2NrZXIpCit2b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
KQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIG1fZGF0YS0+
YXQoaSkuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIG1fZGF0YS0+
YXQoaSkuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiB9CiAKIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlKiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCgKQEAg
LTg3LDEzICs4NywxMyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogTGF6eU9wZXJhbmRWYWx1
CiB9CiAKIFNwZWN1bGF0ZWRUeXBlIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpwcmVk
aWN0aW9uKAotICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBjb25zdCBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdAorICAgIGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0CiB7
CiAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBnZXRJZlByZXNlbnQoa2V5
KTsKICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgIHJldHVybiBTcGVjTm9uZTsKICAgICAKLSAg
ICByZXR1cm4gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAg
cmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0
YVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGFkYXRhVGFibGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTQg
QEAgcHVibGljOgogICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEpOwogICAgIH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgorICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90IG51bUVudHJpZXMo
KQorICAgIHsKKyAgICAgICAgYXV0byogc3RhcnQgPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6
Ok1ldGFkYXRhKj4oZ2V0KE9wOjpvcGNvZGVJRCkpOworICAgICAgICBhdXRvKiBlbmQgPSBiaXR3
aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhKj4oZ2V0SW1wbChPcDo6b3Bjb2RlSUQgKyAx
KSk7CisgICAgICAgIHJldHVybiBlbmQgLSBzdGFydDsKKyAgICB9CisKICAgICBzaXplX3Qgc2l6
ZUluQnl0ZXMoKTsKIAogICAgIHZvaWQgcmVmKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBA
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXgKICAgICBtYWNybyhPcEVu
dW1lcmF0b3JHZXRCeVZhbCkgXAogICAgIG1hY3JvKE9wRW51bWVyYXRvckluQnlWYWwpIFwKICAg
ICBtYWNybyhPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSkgXAorICAgIG1hY3JvKE9wR2V0QnlJ
ZCkgXAogCiAjZGVmaW5lIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX0FMTE9DQVRJT05fUFJP
RklMRShtYWNybykgXAogICAgIG1hY3JvKE9wTmV3QXJyYXkpIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDU2LDYgKzQ1Niw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAg
IH0KIAorICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOyAvLyBU
aGUgZmlyc3QgbnVtUGFyYW1ldGVycygpIGFyZSBhcmd1bWVudCBwcm9maWxlcy4KKyAgICBGaXhl
ZFZlY3RvcjxBcnJheVByb2ZpbGU+IG1fYXJyYXlQcm9maWxlczsKKwogcHJpdmF0ZToKICAgICB1
c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgaW50PjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVl
UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
YWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMSBA
QCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgCiAgICAgVmFsdWVQcm9maWxlQmFzZSgp
CiAgICAgeworICAgICAgICBjbGVhckJ1Y2tldHMoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFy
QnVja2V0cygpCisgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxO
dW1iZXJPZkJ1Y2tldHM7ICsraSkKICAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KQEAgLTkyLDkgKzk3LDkgQEAgc3RydWN0IFZhbHVl
UHJvZmlsZUJhc2UgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIENT
dHJpbmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikK
KyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oKQogICAgIHsKLSAgICAgICAgY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgICAgICBv
dXQucHJpbnQoInByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG1fcHJlZGljdGlvbikpOwpA
QCAtMTE4LDkgKzEyMyw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgfQog
ICAgIH0KICAgICAKLSAgICAvLyBVcGRhdGVzIHRoZSBwcmVkaWN0aW9uIGFuZCByZXR1cm5zIHRo
ZSBuZXcgb25lLiBOZXZlciBjYWxsIHRoaXMgZnJvbSBhbnkgdGhyZWFkCi0gICAgLy8gdGhhdCBp
c24ndCBleGVjdXRpbmcgdGhlIGNvZGUuCi0gICAgU3BlY3VsYXRlZFR5cGUgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCisgICAgU3BlY3VsYXRlZFR5
cGUgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CkBAIC0xNTYsNiAr
MTU5LDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldAogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewogICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9m
QnVja2V0czwwPigpIHsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaXJzdEJ1Y2tl
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWYWx1ZVByb2ZpbGUsIG1fYnVja2V0c1swXSk7
IH0KIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXIgOiBwdWJsaWMg
VmFsdWVQcm9maWxlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
TW9kZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDEwIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJv
bU9ic2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUq
IHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1ha2VTYWZlKQorQXJyYXlNb2Rl
IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKEFycmF5UHJvZmlsZSogcHJvZmlsZSwgQXJyYXk6OkFj
dGlvbiBhY3Rpb24sIGJvb2wgbWFrZVNhZmUpCiB7CiAgICAgQXJyYXk6OkNsYXNzIG5vbkFycmF5
OwotICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSkK
KyAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkpCiAgICAgICAg
IG5vbkFycmF5ID0gQXJyYXk6Ok9yaWdpbmFsTm9uQXJyYXk7CiAgICAgZWxzZQogICAgICAgICBu
b25BcnJheSA9IEFycmF5OjpOb25BcnJheTsKQEAgLTYzLDI3ICs2MywyNyBAQCBBcnJheU1vZGUg
QXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoY29uc3QgCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbnZlcnRzID0gQXJyYXk6OkFzSXM7CiAKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBl
LCBpc0FycmF5LCBjb252ZXJ0cywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUs
IG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBpc0FycmF5LCBjb252
ZXJ0cywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgfTsKIAot
ICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWQgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9j
a2VyKTsKKyAgICBBcnJheU1vZGVzIG9ic2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1v
ZGVzKCk7CiAgICAgc3dpdGNoIChvYnNlcnZlZCkgewogICAgIGNhc2UgMDoKICAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6VW5wcm9maWxlZCk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJh
eTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIp
KQorICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFy
cmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgbm9uQXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywg
QXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIG5vbkFycmF5LCBhY3Rpb24pLndpdGhTcGVjdWxhdGlv
bkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBub25BcnJheSwgYWN0aW9u
KS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAKICAgICBj
YXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoVW5kZWNpZGVkKToK
ICAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUpCiAgICAgICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgQXJyYXk6OkFycmF5LCBBcnJh
eTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pOwotICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpVbmRlY2lkZWQsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91
bmRzLCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VW5kZWNpZGVkLCBBcnJh
eTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFBy
b2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgICAgICAKICAgICBjYXNlIGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBl
ZEFycmF5cyhBcnJheVdpdGhVbmRlY2lkZWQpOgotICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5
OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGxvY2tlcikp
CisgICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRl
cmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKICAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlNlbGVjdFVzaW5nQXJndW1lbnRzLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6Ok91
dE9mQm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgYWN0aW9uKS53aXRoU3BlY3VsYXRp
b25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgYWN0aW9uKS53aXRoU3Bl
Y3VsYXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAKICAgICBjYXNlIGFzQXJy
YXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoSW50MzIpOgogICAgIGNhc2Ug
YXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhJbnQzMik6CkBAIC0xMTMs
NTAgKzExMyw1MCBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoY29uc3QgCiAg
ICAgICAgIHJldHVybiBoYW5kbGVDb250aWd1b3VzTW9kZXMoQXJyYXk6OkNvbnRpZ3VvdXMsIG9i
c2VydmVkKTsKIAogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25B
cnJheVdpdGhBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpB
cnJheVN0b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShs
b2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJh
eTo6QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2Zp
bGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBl
ZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICBjYXNlIGFzQXJy
YXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFz
QXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3Jh
Z2UsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndp
dGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIEFycmF5OjpBcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgYXNBcnJheU1v
ZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFy
cmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJh
eVN0b3JhZ2UsIEFycmF5OjpBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUo
bG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1v
ZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpOgotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5
LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VT
YWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJh
eTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmls
ZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhO
b25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5
TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0Fy
cmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0Fy
cmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5
U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQ
cm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNh
c2UgSW50OEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50OEFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUs
IG1ha2VTYWZlKTsKICAgICBjYXNlIEludDE2QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpJbnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OkludDE2QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBJbnQzMkFycmF5TW9k
ZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MzJBcnJheSwgbm9uQXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQzMkFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwog
ICAgIGNhc2UgVWludDhBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OlVpbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShs
b2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJh
eTo6VWludDhBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4Q2xhbXBlZEFycmF5TW9kZToKLSAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDhDbGFtcGVkQXJyYXksIG5vbkFycmF5
LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VT
YWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDhDbGFtcGVkQXJyYXks
IG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CiAgICAgY2FzZSBVaW50MTZBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1v
ZGUoQXJyYXk6OlVpbnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0
aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlVpbnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgVWludDMyQXJyYXlNb2Rl
OgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MzJBcnJheSwgbm9uQXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MzJBcnJheSwgbm9uQXJy
YXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsK
ICAgICBjYXNlIEZsb2F0MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OkZsb2F0MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpGbG9hdDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRo
UHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9hdDY0QXJyYXlNb2RlOgot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDY0QXJyYXksIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZl
KTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwog
ICAgIGNhc2UgQmlnSW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OkJpZ0ludDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJv
ZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6QmlnSW50NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndp
dGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ1VpbnQ2NEFycmF5TW9k
ZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QmlnVWludDY0QXJyYXksIG5vbkFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QmlnVWludDY0QXJyYXks
IG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CiAKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBJZiB3ZSBoYXZlIHNlZW4gbXVsdGlw
bGUgVHlwZWRBcnJheSB0eXBlcywgb3IgYSBUeXBlZEFycmF5IGFuZCBub24tdHlwZWQgYXJyYXks
IGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB0cnkgdG8gY29udmVydCB0aGUgb2JqZWN0IHNpbmNl
IHlvdSBjYW4ndCBjb252ZXJ0IHR5cGVkIGFycmF5cy4KICAgICAgICAgaWYgKG9ic2VydmVkICYg
QUxMX1RZUEVEX0FSUkFZX01PREVTKQotICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJh
eTo6R2VuZXJpYywgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6R2VuZXJpYywgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKIAotICAgICAgICBpZiAoKG9ic2VydmVkICYgYXNBcnJheU1v
ZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheSkpICYmIHByb2ZpbGUtPm1heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQotICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUo
bG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIGlmICgob2JzZXJ2ZWQgJiBhc0Fy
cmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KSkgJiYgcHJvZmlsZS0+bWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCisgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFy
cmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShw
cm9maWxlLCBtYWtlU2FmZSk7CiAgICAgICAgIAogICAgICAgICBBcnJheTo6VHlwZSB0eXBlOwog
ICAgICAgICBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzczsKQEAgLTE4Myw3ICsxODMsNyBAQCBBcnJh
eU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoY29uc3QgCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGFycmF5Q2xhc3MgPSBBcnJheTo6UG9zc2libHlBcnJheTsKICAgICAgICAgCi0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcywgQXJyYXk6OkNvbnZlcnQsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbiku
d2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH0KIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHdvcmQp
OwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgQXJyYXlNb2RlIGZyb21PYnNlcnZlZChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2ZpbGUqLCBBcnJheTo6QWN0aW9uLCBib29sIG1h
a2VTYWZlKTsKKyAgICBzdGF0aWMgQXJyYXlNb2RlIGZyb21PYnNlcnZlZChBcnJheVByb2ZpbGUq
LCBBcnJheTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKICAgICAKICAgICBBcnJheU1vZGUgd2l0
aFNwZWN1bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7
CkBAIC0xOTAsMTMgKzE5MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUo
dHlwZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigp
KTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxl
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUs
IGJvb2wgbWFrZVNhZmUpIGNvbnN0CisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Q
cm9maWxlKEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7
CiAgICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNwZWN1bGF0aW9uOwogCiAgICAgICAgIGlm
IChtYWtlU2FmZSkKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3Vu
ZHM7Ci0gICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCisg
ICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKCkpCiAgICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bXlTcGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKQEAgLTIwNCwxMyArMjA0LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKICAg
ICB9CiAgICAgCi0gICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0
CisgICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBt
YWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAgICAgIEFycmF5OjpDbGFzcyBteUFycmF5Q2xhc3M7
CiAKICAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7Ci0gICAgICAgICAgICBpZiAocHJvZmlsZS0+
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZpdHNGcm9tT3JpZ2lu
YWxBcnJheSgpKSB7Ci0gICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzID0gcHJv
ZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CisgICAgICAgICAgICBpZiAocHJvZmls
ZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkgJiYgYmVuZWZpdHNGcm9tT3JpZ2luYWxB
cnJheSgpKSB7CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzID0gcHJvZmls
ZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKCk7CiAgICAgICAgICAgICAgICAgaWYgKGhhc1NlZW5Db3B5
T25Xcml0ZUFycmF5KGFycmF5TW9kZXMpICYmICFoYXNTZWVuV3JpdGFibGVBcnJheShhcnJheU1v
ZGVzKSkKICAgICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6Ok9yaWdpbmFs
Q29weU9uV3JpdGVBcnJheTsKICAgICAgICAgICAgICAgICBlbHNlIGlmICghaGFzU2VlbkNvcHlP
bldyaXRlQXJyYXkoYXJyYXlNb2RlcykgJiYgaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2Rl
cykpCkBAIC0yMjIsNyArMjIyLDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG15QXJyYXlDbGFzcyA9IGFycmF5Q2xhc3MoKTsKICAgICAgICAgCi0gICAgICAgIHJldHVy
biB3aXRoQXJyYXlDbGFzcyhteUFycmF5Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xh
c3MobXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CiAgICAgfQogICAgIAogICAgIEFycmF5TW9kZSB3aXRoVHlwZShBcnJheTo6VHlwZSB0
eXBlKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTUsMTEgKzg5
NSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBhdXRvIGdldFZhbHVlUHJvZmlsZVByZWRp
Y3Rpb25Gcm9tRm9yQ29kZUJsb2NrQW5kQnl0ZWNvZGVPZmZzZXQgPSBbJl0gKENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uOwotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwot
ICAgICAgICAgICAgICAgIHByZWRpY3Rpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZVByZWRp
Y3Rpb25Gb3JCeXRlY29kZUluZGV4KGxvY2tlciwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9
IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KCkpOwogICAgICAgICAgICAgYXV0byogZnV6emVyQWdlbnQgPSBt
X3ZtLT5mdXp6ZXJBZ2VudCgpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGZ1enplckFnZW50
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZnV6emVyQWdlbnQtPmdldFByZWRpY3Rpb24oY29k
ZUJsb2NrLCBjb2RlT3JpZ2luLCBwcmVkaWN0aW9uKSAmIFNwZWNCeXRlY29kZVRvcDsKQEAgLTk4
MywxMCArOTc5LDkgQEAgcHJpdmF0ZToKIAogICAgIEFycmF5TW9kZSBnZXRBcnJheU1vZGUoQXJy
YXlQcm9maWxlJiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKICAgICB7Ci0gICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5tX2xvY2spOwotICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihs
b2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jayk7Ci0gICAgICAgIGJvb2wg
bWFrZVNhZmUgPSBwcm9maWxlLm91dE9mQm91bmRzKGxvY2tlcik7Ci0gICAgICAgIHJldHVybiBB
cnJheU1vZGU6OmZyb21PYnNlcnZlZChsb2NrZXIsICZwcm9maWxlLCBhY3Rpb24sIG1ha2VTYWZl
KTsKKyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrKTsKKyAgICAgICAgYm9vbCBtYWtlU2FmZSA9IHByb2ZpbGUu
b3V0T2ZCb3VuZHMoKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKCZw
cm9maWxlLCBhY3Rpb24sIG1ha2VTYWZlKTsKICAgICB9CiAKICAgICBOb2RlKiBtYWtlU2FmZShO
b2RlKiBub2RlKQpAQCAtMjA1OCw5ICsyMDUzLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlVmFyYXJnc0lubGluaQogICAgICAgICAgICAgLy8gYXJndW1lbnRzIHJlY2VpdmVkIGluc2lk
ZSB0aGUgY2FsbGVlLiBCdXQgdGhhdCBwcm9iYWJseSB3b24ndCBtYXR0ZXIgZm9yIG1vc3QKICAg
ICAgICAgICAgIC8vIGNhbGxzLgogICAgICAgICAgICAgaWYgKGNvZGVCbG9jayAmJiBhcmd1bWVu
dCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpIHsK
LSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9s
b2NrKTsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUmIHByb2ZpbGUgPSBjb2RlQmxvY2st
PnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+cHJlZGljdChwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsK
KyAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChwcm9maWxlLmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAg
Tm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKG51bVNldEFyZ3VtZW50cyA+PSBtYW5kYXRv
cnlNaW5pbXVtID8gU2V0QXJndW1lbnRNYXliZSA6IFNldEFyZ3VtZW50RGVmaW5pdGVseSwgT3BJ
bmZvKHZhcmlhYmxlKSk7CkBAIC02MzA1LDcgKzYyOTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ29tcGlsZUFzR2V0
QnlJZCkKICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGJ5dGVjb2RlLm1fZHN0LCBwcmVk
aWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cywg
QWNjZXNzVHlwZTo6R2V0QnlJZCwgbmV4dE9wY29kZUluZGV4KCkpOwogICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7
CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwog
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBjb25zaWRlciBtYWtpbmcgdGhpcyBu
b3QgdmFyYXJnLCBzaW5jZSBpdCBvbmx5IHVzZXMgdGhyZWUgY2hpbGQKICAgICAgICAgICAgICAg
ICAvLyBzbG90cy4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg0MTkyCkBAIC03MDc1LDExICs3MDY5LDkgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgSGFzaFNldDx1bnNpZ25l
ZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czx1bnNpZ25lZD4+IHNlZW5Bcmd1bWVudHM7CiAKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+bV9sb2NrKTsKLQogICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChb
Jl0gKFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlciYgcHJvZmlsZSkgewogICAgICAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7Ci0g
ICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgbG9jYWxQcmVkaWN0aW9ucy5hcHBlbmQocHJlZGljdGlvbik7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtNzQzMSw3ICs3NDIzLDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGlzRG9uZUJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygpOwogICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGRvTG9hZEJsb2NrID0gYWxsb2NhdGVVbnRhcmdldGFibGVCbG9jaygp
OwogCi0gICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSht
ZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAg
IEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1faXRlcmFibGVQ
cm9maWxlLCBBcnJheTo6UmVhZCk7CiAgICAgICAgICAgICAgICAgYXV0byBwcmVkaWN0aW9uID0g
Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgu
b2Zmc2V0KCksIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZSkpOwogCiAgICAgICAgICAgICAgICAg
ewpAQCAtODMyNiw3ICs4MzE4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNJbkJ5
SWQpIHsKLSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFk
KTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCpi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7
CiAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluQnlWYWws
IE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fYnlfdmFsKTsKQEAgLTg0MTAsNyAr
ODQwMiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgY2FzZSBvcF9lbnVtZXJhdG9yX25leHQ6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvck5leHQ+KCk7CiAgICAgICAgICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAg
ICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0g
Z2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAg
ICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwogICAgICAgICAgICAg
Tm9kZSogaW5kZXggPSBnZXQoYnl0ZWNvZGUubV9pbmRleCk7CiAgICAgICAgICAgICBOb2RlKiBl
bnVtZXJhdG9yID0gZ2V0KGJ5dGVjb2RlLm1fZW51bWVyYXRvcik7CkBAIC04NDQyLDcgKzg0MzQs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNh
c2Ugb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JHZXRCeVZhbD4oKTsKICAgICAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9h
cnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1v
ZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7
CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbiA9IGdldFByZWRpY3Rpb25X
aXRob3V0T1NSRXhpdCgpOwogCiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2Rl
Lm1fYmFzZSk7CkBAIC04NTA2LDcgKzg0OTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9pbl9ieV92YWw6IHsK
ICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51
bWVyYXRvckluQnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0g
Z2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAg
ICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChn
ZXQoYnl0ZWNvZGUubV9iYXNlKSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0
ZWNvZGUubV9wcm9wZXJ0eU5hbWUpKTsKQEAgLTg1MjEsNyArODUxMyw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9lbnVtZXJhdG9y
X2hhc19vd25fcHJvcGVydHk6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckhhc093blByb3BlcnR5PigpOwogICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKIAog
ICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFzZSkpOwogICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lKSk7CkBAIC04
ODgxLDcgKzg4NzMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRl
CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJZCkgewotICAgICAgICBBcnJheU1v
ZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayku
bV9hcnJheVByb2ZpbGUsIEFycmF5OjpXcml0ZSk7CisgICAgICAgIEFycmF5TW9kZSBhcnJheU1v
ZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVBy
b2ZpbGUsIEFycmF5OjpXcml0ZSk7CiAKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CiAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDA0Miw5ICs0MDQyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2stPmdl
dEFycmF5UHJvZmlsZShub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKTsKICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQ
cmVkaWN0aW9ucywgQXJyYXk6OlJlYWQpOwogICAgICAgICBpZiAoYXJyYXlQcm9maWxlKSB7Ci0g
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9j
ayk7Ci0gICAgICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihs
b2NrZXIsIHByb2ZpbGVkQmxvY2spOwotICAgICAgICAgICAgYXJyYXlNb2RlID0gQXJyYXlNb2Rl
Ojpmcm9tT2JzZXJ2ZWQobG9ja2VyLCBhcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkLCBmYWxzZSk7
CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihwcm9m
aWxlZEJsb2NrKTsKKyAgICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2Vy
dmVkKGFycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQsIGZhbHNlKTsKICAgICAgICAgICAgIGlmIChh
cnJheU1vZGUudHlwZSgpID09IEFycmF5OjpVbnByb2ZpbGVkKSB7CiAgICAgICAgICAgICAgICAg
Ly8gRm9yIG5vcm1hbCBhcnJheSBvcGVyYXRpb25zLCBpdCBtYWtlcyBzZW5zZSB0byB0cmVhdCBV
bnByb2ZpbGVkCiAgICAgICAgICAgICAgICAgLy8gYWNjZXNzZXMgYXMgRm9yY2VFeGl0IGFuZCBn
ZXQgbW9yZSBkYXRhIHJhdGhlciB0aGFuIHVzaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE2ICs0OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKCktPm51bVBhcmFtZXRl
cnMoKSA+PSAxKTsKICAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAg
IC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2su
IFRoZSBhcmd1bWVudHMgZnJvbQogICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2
ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCiAgICAgICAg
ICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fcm9vdFRvQXJndW1lbnRzLmZpbmQobV9n
cmFwaC5ibG9jaygwKSktPnZhbHVlOwogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAw
OyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkp
OyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9IHByb2Zp
bGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKLSAgICAgICAgICAgICAg
ICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCi0gICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwor
ICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJl
ZGljdChwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyOCwxMCArMTAy
OCw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWxPcHRpbWkKICAgICAgICAg
aWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAmJiBzdWJzY3Jp
cHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VP
YmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVy
Q2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAgICAg
ICAgIGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwcm9maWxlKQorICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2Nr
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRL
aW5kOjpOb3REaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MTA5OCwxMCArMTA5Niw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGlyZWN0UHV0QnlW
YWwKICAgICBpZiAoIWlzQ29weU9uV3JpdGUoYmFzZU9iamVjdC0+aW5kZXhpbmdNb2RlKCkpICYm
IHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBi
YXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVy
Q2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAgICAg
aWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5j
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAgICAg
ICAgcmVwYXRjaEFycmF5UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1
ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8sIFB1dEtpbmQ6OkRpcmVjdCwgZWNtYU1vZGUpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjQxMiwxMCArMjQwOCw4IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25HZXRCeVYKICAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNj
cmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlVmFs
dWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lk
ZXJDYWNoaW5nR2VuZXJpYyh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAg
ICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChwcm9maWxlKQorICAgICAgICAgICAgICAgIHByb2ZpbGUt
PmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICByZXBhdGNoQXJyYXlHZXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZh
bHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbyk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNp
b24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwotICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBKSVQ6OmdlbmVyYXRl
R2V0QnlWYWxTbG93Q2FzZShjb25zdAogICAgIGlmIChoYXNBbnlTbG93Q2FzZXMoaXRlcikpIHsK
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAg
QXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgICAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAg
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CkBAIC00ODIsNyArNDgyLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSQogICAgICAgICB2YWx1ZSA9
IGJ5dGVjb2RlLm1fdmFsdWU7CiAgICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9k
ZTsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7Ci0gICAgICAgIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgICAg
IHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKICAgICB9OwogCiAgICAgaWYgKGlz
RGlyZWN0KQpAQCAtMTEwOCwxMSArMTEwOCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9p
ZChjb25zdCBJbnN0cnUKICAgICAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVn
VDAsIGJhc2VWUmVnKTsKICAgICAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RB
cnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhf
dD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0
aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMSk7Ci0gICAgICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5s
aW5rKHRoaXMpOwotICAgIH0KKyAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIHJlZ1QxKTsK
IAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKQEAg
LTE1MTEsNyArMTUwOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0
cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUq
IHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHksIHJlZ1QxKTsKQEAgLTE1MzgsNyArMTUzNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9p
bl9ieV92YWwoY29uc3QgSW4KICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEluQnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsK
KyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAog
ICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgr
K107CiAKQEAgLTIzOTMsNyArMjM5MCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSkkKICAgICB9CiAKICAgICBzdGF0aWNfYXNzZXJ0KFZhbHVlUHJvZmlsZTo6bnVt
YmVyT2ZCdWNrZXRzID09IDEpOwotICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3MobWV0YWRhdGFH
UFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSkpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhtZXRhZGF0YUdQUiwgT0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUp
KSwgcmVnVDEpOworICAgIHN0b3JlNjQocmVnVDAsIEFkZHJlc3MocmVnVDEsIFZhbHVlUHJvZmls
ZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAKICAgICByZXQoKTsKIApAQCAtMjQ0OSw3ICsy
NDQ3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAgIENh
bGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKICAgICBKdW1wIGV4Y2Vw
dGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSAg
ICBqaXQuc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlciwg
T0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSk7CisgICAgaml0LmxvYWRQdHIo
QWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9GKE1ldGFk
YXRhLCBtX3Byb2ZpbGUpKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIGppdC5z
dG9yZTY0KHJlZ1QwLCBBZGRyZXNzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBWYWx1ZVBy
b2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAKICNp
ZiBDUFUoWDg2XzY0KQpAQCAtMjg1NCw3ICsyODUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKAogICAgIFZpcnR1YWxSZWdpc3RlciBpbmRleCA9IGJ5dGVjb2Rl
Lm1faW5kZXg7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5TmFtZSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHlOYW1lOwogICAgIFZpcnR1YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUu
bV9lbnVtZXJhdG9yOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyODIxODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0T3BlcmFuZChD
YWxsRnJhbWUqIGNhbAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX1BST0ZJ
TEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCisg
ICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9wcm9maWxlLT5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNk
ZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChjYWxsRnJhbWUsIGNhbGxUYXJnZXQsIGNhbGxUYXJn
ZXRUYWcpIFwKQEAgLTc2MSw3ICs3NjEsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90
b3R5cGVDYWNoZShKCiAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKIH0KIAot
c3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRh
dGEmIG1ldGFkYXRhKQorc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEdl
dEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04MjQsOCArODI0LDkgQEAgc3RhdGljIEpT
VmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdAogICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FM
V0FZU19BQ0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBpZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChhcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgbWV0YWRhdGEuc2V0QXJyYXlMZW5n
dGhNb2RlKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9m
aWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsK
KyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9CiAgICAgICAgIHZtLmhlYXAud3JpdGVC
YXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQpAQCAtODQxLDcgKzg0Miw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOwog
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7CiAgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7CiB9CiAKQEAgLTg1NywxMCArODU4LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl8KICAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpCiAgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVy
YXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBn
bG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YSwgbnVsbHB0cik7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAg
ICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
aykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
KyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fbmV4dFByb2ZpbGUtPm1fYnVja2V0
c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQogCkBA
IC04NzcsMTAgKzg3OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0
b3JfCiAgICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09iamVjdCgpKQogICAgICAgICBMTElOVF9U
SFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVy
ZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJm
b3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1
cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1l
dGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgbnVsbHB0cik7CiAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CiAgICAgZG9uZVJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fZG9uZVByb2Zp
bGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIExMSU5UX0VO
RCgpOwogfQogCkBAIC04OTQsMTAgKzg5NSwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaXRlcmF0b3JfCiAgICAgUmVnaXN0ZXImIHZhbHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgSlNWYWx1ZSBpdGVyYXRvclJldHVy
biA9IHZhbHVlUmVnaXN0ZXIuanNWYWx1ZSgpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJm
b3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1
cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRh
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUs
IG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwogICAgIHZhbHVlUmVnaXN0ZXIgPSByZXN1bHQ7Ci0gICAgYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fdmFs
dWVQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBM
TElOVF9FTkQoKTsKIH0KIApAQCAtMTAyNCw3ICsxMDI1LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBnZXRCeVZhbChWTQogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKICAgICAgICAgdWludDMy
X3QgaSA9ICppbmRleDsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9ICZtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUg
PSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNl
VmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5k
ZXgoaSkpIHsKQEAgLTE0MjksNyArMTQzMCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9pbl9ieV92YWwKICAgICBMTElOVF9CRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BJbkJ5VmFsPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRo
czo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KSwgJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29t
bW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9iYXNlKSwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJv
cGVydHkpLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNp
b24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTY4LDE1ICs2OCwxNiBAQCBtYWNybyBtYWtl
UmV0dXJuUHJvZmlsZWQob3Bjb2RlU3RydWN0LCBnCiAgICAgZm4obWFjcm8gKHZhbHVlKQogICAg
ICAgICBtb3ZlIHZhbHVlLCB0MwogICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQorICAgICAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0MywgdDIpCiAgICAgICAgIGdl
dChtX2RzdCwgdDEpCiAgICAgICAgIHN0b3JlcSB0MywgW2NmciwgdDEsIDhdCiAgICAgICAgIGRp
c3BhdGNoKCkKICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVj
dCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEgdmFsdWUsICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHNbbWV0YWRhdGFdCitt
YWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZh
bHVlLCBzY3JhdGNoKQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2Zp
bGVOYW1lJVttZXRhZGF0YV0sIHNjcmF0Y2gKKyAgICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmls
ZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5
dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCkBAIC04Nyw3
ICs4OCw3IEBAIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnUKICAgICBn
ZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQxKQogICAgIHN0b3Jl
cSByMCwgW2NmciwgdDEsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0Miwg
dDEpCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIs
IHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCByMCwgdDMpCiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTE1MDksNyArMTUxMCw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKICAgICBiaW5lcSB0MCwgdDEs
IC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0
YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEs
IHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQy
LCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0
MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE1MTgs
NyArMTUxOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKIGVu
ZCkKIAogIyBUaGUgYmFzZSBvYmplY3QgaXMgZXhwZWN0ZWQgaW4gdDMKLW1hY3JvIHBlcmZvcm1H
ZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxl
TmFtZSwgc2xvd0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorbWFjcm8gcGVyZm9ybUdl
dEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVO
YW1lLCBzbG93TGFiZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4sIGRvQXJyYXlQcm9maWxlKQog
ICAgIG1ldGFkYXRhKHQyLCB0MSkKICAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVtb2RlTWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKIApAQCAtMTUyOSw3ICsxNTMwLDcgQEAg
bWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGJpbmVxIHQwLCB0
MSwgc2xvd0xhYmVsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVN
ZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkK
IAogLm9wR2V0QnlJZFByb3RvTG9hZDoKQEAgLTE1NDAsMjcgKzE1NDEsMjcgQEAgbWFjcm8gcGVy
Zm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNl
dFt0Ml0sIHQxCiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAu
b3BHZXRCeUlkQXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9k
ZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMsIHQwCi0gICAgYXJy
YXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgZG9BcnJheVByb2Zp
bGUodDAsIHQyLCB0NSwgdDEpCiAgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCiAgICAg
YnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAogICAgIGxvYWRDYWdlZEpTVmFs
dWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQxKQogICAgIGxvYWRpIC1zaXplb2Yg
SW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0
MF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCiAgICAgb3JxIG51bWJlclRhZywgdDAK
LSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAp
CisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQw
LCB0MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQogICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAg
ICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmluZWQpCisgICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkLCB0MSkK
ICAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCiAKIGVuZApAQCAtMTU2OCw3ICsxNTY5LDEwIEBA
IGVuZAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fYmFzZSwg
dDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRC
eUlkU2xvdykKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQsIG1fbW9kZU1ldGFk
YXRhLCBtX3Byb2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQor
ICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJv
ZmlsZSwgLm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4sCisgICAgICAgIG1h
Y3JvIChjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQor
ICAgICAgICAgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQor
ICAgICAgICBlbmQpCiAKIC5vcEdldEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2dldF9ieV9pZCkKQEAgLTE1NzcsNyArMTU4MSw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJT
ZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRh
KHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCkK
KyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCwgdDMpCiAgICAg
cmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNjk4LDcgKzE3MDIsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0
LCBzY3JhdGNoKQogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlcSBy
ZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCByZXN1bHQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCByZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGRpc3BhdGNoKCkKICAg
ICBlbmQKIApAQCAtMTcxOSw3ICsxNzIzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0
MCwgLm9wR2V0QnlWYWxTbG93KQogCiAgICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUo
T3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQorICAgIGFy
cmF5UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwg
dDEsIHQzKQogCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE3NTksNyArMTc2
Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIAogLm9wR2V0
QnlWYWxEb25lOgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDMpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZh
bE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTc3Miw3ICsxNzc2LDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNl
dHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRh
KHQ1LCB0MikKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjAp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwLCB0MykKICAg
ICByZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE3OTQsNyArMTc5OCw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwKIAogICAgIGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6
Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3By
b2ZpbGUsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9m
aWxlLCB0MiwgdDAsIHQzKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93
OgpAQCAtMTg5Nyw3ICsxOTAxLDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1YwogCiAgICAgICAgIC5vdXRPZkJvdW5kczoKICAgICAgICAgICAgIGJpYWVxIHQzLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JM
ZW5ndGhbdDBdLCAub3BQdXRCeVZhbE91dE9mQm91bmRzCi0gICAgICAgICAgICBzdG9yZWIgMSwg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xl
W3Q1XQorICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZVt0NV0sIHQyCisgICAgICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21h
eVN0b3JlVG9Ib2xlW3QyXQogICAgICAgICAgICAgYWRkaSAxLCB0MywgdDIKICAgICAgICAgICAg
IHN0b3JlaSB0MiwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxl
bmd0aHMucHVibGljTGVuZ3RoW3QwXQogICAgICAgICAgICAgam1wIC5zdG9yZVJlc3VsdApAQCAt
MTkwNyw3ICsxOTEyLDcgQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
YwogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDEsIC5vcFB1
dEJ5VmFsU2xvdykKICAgICAgICAgbW92ZSB0MSwgdDIKICAgICAgICAgbWV0YWRhdGEodDUsIHQw
KQotICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZSwgdDIsIHQ1LCB0MCkKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQzKQogICAgICAgICBnZXQo
bV9wcm9wZXJ0eSwgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXpl
LCB0MCwgdDMsIC5vcFB1dEJ5VmFsU2xvdykKICAgICAgICAgc3hpMnEgdDMsIHQzCkBAIC0xOTYy
LDcgKzE5NjcsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAg
ICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHk6Ci0g
ICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxl
Lm1fbWF5U3RvcmVUb0hvbGVbdDVdCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9m
aWxlOjptX21heVN0b3JlVG9Ib2xlW3QxXQogICAgICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6
bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KICAgICAgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQ
dXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAgICAgICAgIGFkZGkgMSwgdDMsIHQxCkBA
IC0xOTcwLDcgKzE5NzYsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0
cnVjCiAgICAgICAgIGptcCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAKICAg
ICAub3BQdXRCeVZhbE91dE9mQm91bmRzOgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX291dE9mQm91bmRzW3Q1XQorICAgICAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAg
ICAgICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9vdXRPZkJvdW5kc1t0MV0KICAgICAub3BQ
dXRCeVZhbFNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNv
ZGVOYW1lJSkKICAgICAgICAgZGlzcGF0Y2goKQpAQCAtMjY2Miw3ICsyNjY5LDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgIG1hY3JvIGdldFByb3BlcnR5
KCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVd
LCB0MQogICAgICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0g
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIpCisg
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIsIHQz
KQogICAgICAgICByZXR1cm4odDIpCiAgICAgZW5kCiAKQEAgLTI2NzAsMTQgKzI2NzcsMTQgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAgICBsb2FkcCBP
cEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQwCiAgICAgICAgIGxvYWRx
IFt0MF0sIHQwCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDApCi0gICAgICAgIHZhbHVl
UHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCisgICAgICAgIHZhbHVl
UHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDAsIHQzKQogICAgICAgICBy
ZXR1cm4odDApCiAgICAgZW5kCiAKICAgICBtYWNybyBnZXRDbG9zdXJlVmFyKCkKICAgICAgICAg
bG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAg
ICBsb2FkcSBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXNbdDAsIHQxLCA4XSwgdDAKLSAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKKyAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMp
CiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIApAQCAtMzAwMiw3ICszMDA5LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcAogCiAgICAgbG9hZFZhcmlhYmxl
KGdldCwgbV9pdGVyYXRvciwgdDMpCiAgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuaXRlcmF0
b3JPcGVuR2VuZXJpY0dldE5leHRTbG93Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVy
YXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2Vu
ZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisg
ICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBt
X25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRh
ZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLml0
ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQpAQCAtMzA2MSw3ICszMDY4LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcAogCiAgICAgbG9hZFZhcmlhYmxl
KGdldCwgbV92YWx1ZSwgdDMpCiAgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuZ2V0RG9uZVNs
b3cKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1l
dGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9y
ZURvbmVBbmRKbXBUb0dldFZhbHVlKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0
b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywg
c2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUsIG1hY3JvKGEsIGIsIGMs
IGQpIGVuZCkKIAogLmdldERvbmVTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2l0ZXJhdG9yX25leHRfZ2V0X2RvbmUpCkBAIC0zMDg2LDcgKzMwOTMsNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wCiAgICAgIyBSZWxvYWQgdGhlIG5leHQg
cmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0
My4KICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICAjIFdlIGRvbid0IG5l
ZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3
ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KLSAgICBwZXJmb3JtR2V0QnlJREhl
bHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUs
IC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisg
ICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRh
dGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVW
YWx1ZUFuZERpc3BhdGNoLCBtYWNybyhhLCBiLCBjLCBkKSBlbmQpCiAKIC5nZXRWYWx1ZVNsb3c6
CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFs
dWUpCkBAIC0zMTU5LDcgKzMxNjYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2VudW1lcmF0
b3JfZ2V0X2J5CiAgICAgbG9hZHEgY29uc3RleHByICgob2Zmc2V0SW5CdXR0ZXJmbHkoZmlyc3RP
dXRPZkxpbmVPZmZzZXQpKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpW3QwLCB0MiwgOF0sIHQy
CiAKIC5kb25lOgotICAgIHZhbHVlUHJvZmlsZShPcEVudW1lcmF0b3JHZXRCeVZhbCwgbV9wcm9m
aWxlLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxlKE9wRW51bWVyYXRvckdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCB0MiwgdDMpCiAgICAgcmV0dXJuKHQyKQogCiAuZ2V0U2xvd1BhdGg6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyODQsMTEgKzEyODQs
MTIgQEAgbWFjcm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTgogICAgIGxvYWRp
IExMSW50UmV0dXJuUENbY2ZyXSwgUEMKIGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0
LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKK21hY3JvIGFycmF5UHJv
ZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpCiAgICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKICAgICBjb25zdCBp
bmRleGluZ1R5cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAotICAgIGxvYWRpIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFtjZWxsXSwgc2NyYXRjaAotICAgIHN0b3JlaSBzY3JhdGNoLCBvZmZzZXQgKyBB
cnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFttZXRhZGF0YV0KKyAgICBsb2FkcCBv
ZmZzZXRbbWV0YWRhdGFdLCBzY3JhdGNoMgorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFtjZWxsXSwgc2NyYXRjaDEKKyAgICBzdG9yZWkgc2NyYXRjaDEsIEFycmF5UHJvZmlsZTo6bV9s
YXN0U2VlblN0cnVjdHVyZUlEW3NjcmF0Y2gyXQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGlu
Z1R5cGVBbmRNaXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCkBAIC0xNjEyLDggKzE2MTMs
OCBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAgICAgYWRkcCAt
cHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhl
IHBlZXBob2xlCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAwLCBvayBlbmQpCiAg
ICAgYnRweiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
YXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50
ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMKLSAgICBidHB6IHQzLCAuYXJndW1lbnRQcm9maWxlRG9u
ZSAjIFdoZW4gd2UgY2FuJ3QgSklULCB3ZSBkb24ndCBhbGxvY2F0ZSBhbnkgYXJndW1lbnQgdmFs
dWUgcHJvZmlsZXMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0MV0sIHQz
CisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fdmFsdWVQcm9maWxlcyArIEZpeGVkVmVj
dG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0M10sIHQzCiAgICAgbXVs
cCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGgg
cmVkdWN0aW9uIQogICAgIGxzaGlmdHAgMywgdDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFy
Z3VtZW50cyBvbiB0aGUgc3RhY2suCiAgICAgYWRkcCB0MiwgdDMgIyBwb2ludGVyIHRvIGVuZCBv
ZiBWYWx1ZVByb2ZpbGUgYXJyYXkgaW4gQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxl
cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rl
U2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNyBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29k
ZVNlcXVlbmNlKENvZGVCCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzKCk7ICsraSkgewotICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+
dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbihsb2NrZXIpOworICAg
ICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1
bWVudChpKS5icmllZkRlc2NyaXB0aW9uKCk7CiAgICAgICAgIGlmICghZGVzY3JpcHRpb24ubGVu
Z3RoKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgb3V0LnJlc2V0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlX18sIG1fcHJvZmlsZSkKIAog
I2RlZmluZSBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBwcm9maWxlTmFtZSkgZG8geyBcCi0gICAg
ICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykucHJvZmlsZU5hbWUubV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spLnByb2ZpbGVOYW1lLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFs
dWUpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2b2lkIHRocm93QXJpdHlDaGVj
a1N0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSkKQEAgLTg4Nyw3ICs4ODcsNyBAQCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0
dXJuVHlwZSBpdGVyYXRvCiAgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0
ZXJhYmxlKS5qc1ZhbHVlKCkuYXNDZWxsKCk7CiAgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgewogICAgICAg
ICBpZiAoYXV0byBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkp
IHsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLm9ic2VydmVTdHJ1Y3R1
cmVJRChhcnJheS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJh
YmxlUHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKIAog
ICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRh
ZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RB
cnJheTsKICAgICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVy
bmFsRmllbGQoSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOwpAQCAtOTkzLDcgKzk5Myw3
IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW4KICAgICBBU1NFUlQo
IWJhc2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICBKU09iamVjdCogYmFzZSA9IGJh
c2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlLT5zdHJ1
Y3R1cmVJRCgpKTsKKyAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVy
ZUlEKGJhc2UtPnN0cnVjdHVyZUlEKCkpOwogCiAgICAgSlNTdHJpbmcqIG5hbWUgPSBlbnVtZXJh
dG9yLT5jb21wdXRlTmV4dChnbG9iYWxPYmplY3QsIGJhc2UsIGluZGV4LCBtb2RlKTsKICAgICBD
SEVDS19FWENFUFRJT04oKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIEpTQ19ERUZJTkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfZW4KICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGU6IHsKICAgICAgICAgaWYgKExJS0VM
WShiYXNlVmFsdWUuaXNDZWxsKCkpKQotICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2Zp
bGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlE
KGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAgIFJFVFVSTl9QUk9G
SUxFRChiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
ZGV4KSkpOwogICAgIH0KICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3Ry
dWN0dXJlTW9kZTogewpAQCAtMTAzNCw3ICsxMDM0LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF9lbgogCiAgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OkdlbmVyaWNNb2RlOiB7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAh
PSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCi0gICAgICAgICAg
ICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9m
aWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgp
KTsKICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5tX3By
b3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJp
bmctPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3QpOwogICAgICAgICBDSEVDS19FWENFUFRJT04o
KTsKQEAgLTEwNjgsNyArMTA2OCw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfZW4KICAgICB9CiAKICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5
dGVjb2RlLm1fcHJvcGVydHlOYW1lKS5qc1ZhbHVlKCkpOwotICAgIFJFVFVSTihqc0Jvb2xlYW4o
Q29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN0cmlu
ZywgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29t
bW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN0cmluZywg
bWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1df
UEFUSChzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437774</attachid>
            <date>2021-09-09 13:17:47 -0700</date>
            <delta_ts>2021-09-09 13:55:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>94494</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAyMS0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMgZm9yIG5vbi1jYWxsIG9wY29kZXMgaW50bworICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jay4gVGhpcyB3YXksIHRoZSBkYXRhIGlzIHNoYXJlZCBiZXR3
ZWVuIHRoZSBsaW5rZWQgQ29kZUJsb2NrcworICAgICAgICBvZiB0aGUgc2FtZSBVbmxpbmtlZENv
ZGVCbG9jay4gVGhlIHByb2ZpbGluZyBiZXQgaGVyZSBpcyB0aGF0IHdoZW4gdGhlIHNhbWUgY29k
ZQorICAgICAgICBydW5zIGluIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QsIGl0IGxhcmdlbHkg
cnVucyBpbiB0aGUgc2FtZSB3YXkuIFdlJ3ZlIG1hZGUKKyAgICAgICAgdGhpcyBzYW1lIGJldCBp
biBvdGhlciB3YXlzIHdpdGggb3VyIHByb2ZpbGluZywgYW5kIGl0IGxhcmdlbHkgbWFrZXMgc2Vu
c2UKKyAgICAgICAgdG8gZG8gZm9yIFZhbHVlUHJvZmlsZSBhbmQgQXJyYXlQcm9maWxlIHNpbmNl
IHRoZXkgYm90aCBob2xkIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaW5kZXBlbmRlbnQgZGF0YS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBpdCBzbyB3ZSBubyBsb25n
ZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAgICBwcm9jZXNzaW5nIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxvdyBtdWx0aXBsZSBjb21waWxl
cgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNoIG90aGVyIHdoZW4gdXBkYXRp
bmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAgICAgSXQgbWF5IGVuZCB1cCB3
aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1dCBpdCB3b24ndCBjb3JydXB0
IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIG1lYXN1cmVkIGFzIGEgMSUgc3BlZWR1
cCBvbiBTcGVlZG9tZXRlcjIuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbik6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZWRBcnJheU1vZGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjptYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6Om1heVN0b3JlVG9Ib2xlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjpvdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNo
ZWNrcG9pbnQuaDoKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVycyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2
ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGljdGlv
bnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rp
b25Gb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNo
QXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJyYXlMZW5ndGhNb2RlKToKKyAg
ICAgICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChK
U0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyOjpwcmVkaWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxl
Lmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZW5zdXJlVmFsdWVQcm9maWxlcyk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjplbnN1cmVBcnJheVByb2ZpbGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxl
QmFzZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6
OmNsZWFyQnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmJyaWVmRGVz
Y3JpcHRpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RC
dWNrZXQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2Rl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBj
b25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRv
TWFrZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U6
OnJ1bik6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNv
ZGUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0
QnlWYWxPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OmRpcmVjdFB1dEJ5VmFsT3B0aW1pemUpOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfZnJvbV9zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZvcm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5
dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorCiAyMDIxLTA5
LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYWRkIGZpbGVzIHRvIHhjb2RlcHJvagpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsMTggKzExOCwyMyBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFt
JiBvdXQsIEFyCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkJpZ1VpbnQ2NEFycmF5TW9kZSIp
OwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQg
QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlSUQpCisgICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAg
IFN0cnVjdHVyZUlEIGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOworICAgIGlmICghaWQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9sYXN0U2VlblN0cnVj
dHVyZUlEKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ss
IGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOworICAgIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQordm9pZCBBcnJheVByb2Zp
bGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkKIHsKKyAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxk
IGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuIFRoYXQgd29uJ3QgbGVhZAor
ICAgIC8vIHRvIGFueSBmb3JtIG9mIGNvcnJ1cHRpb24sIGJ1dCBjb3VsZCBjYXVzZSB1cyB0byBn
byBkb3duICFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKKyAgICAvLyBwYXRoIHNpbXVsdGFu
ZW91c2x5LgogICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZXNGcm9tU3RydWN0
dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0
UnVuUHJ1bmluZwpAQCAtMTYzLDEzICsxNjgsMTMgQEAgdm9pZCBBcnJheVByb2ZpbGU6Om9ic2Vy
dmVJbmRleGVkUmVhZChWTQogICAgIH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVm
RGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
Y29kZUJsb2NrKQorQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
Y29kZUJsb2NrKTsKLSAgICByZXR1cm4gYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhs
b2NrZXIpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2spOworICAgIHJl
dHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CiB9CiAKLUNTdHJpbmcgQXJy
YXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhv
dXRVcGRhdGluZygpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJp
bnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDIyICsyMTcsMjIg
QEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOyB9CiAgICAgdm9p
ZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7Ci0gICAgdm9p
ZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgdm9pZCBjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlN
b2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVk
QXJyYXlNb2RlczsgfQotICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzOyB9CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7
IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9Ib2xlKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KLSAgICBib29sIG91dE9m
Qm91bmRzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZC
b3VuZHM7IH0KKyAgICBib29sIG1heVN0b3JlVG9Ib2xlKCkgY29uc3QgeyByZXR1cm4gbV9tYXlT
dG9yZVRvSG9sZTsgfQorICAgIGJvb2wgb3V0T2ZCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX291
dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOyB9CiAKLSAgICBD
U3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJs
b2NrKik7Ci0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihDb2Rl
QmxvY2sqKTsKKyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsK
ICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIG9wIDpnZXRf
YXJndW1lbnQsCiAgICAgICAgIGluZGV4OiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmFyZ3VtZW50X2NvdW50LApAQCAtMTgzLDcgKzE4Myw3IEBA
IG9wIDp0b190aGlzLAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhY2hlZFN0cnVjdHVyZUlE
OiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMsCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6Y2hlY2tfdGR6LApAQCAtMzA5LDcgKzMwOSw3IEBAIG9wX2dyb3Vw
IDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcCA6Yml0bm90LApAQCAt
MzE4LDcgKzMxOCw3IEBAIG9wIDpiaXRub3QsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZQorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3BfZ3JvdXAg
OlVuYXJ5T3AsCkBAIC0zNjMsNyArMzYzLDcgQEAgb3AgOnRvX29iamVjdCwKICAgICAgICAgbWVz
c2FnZTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0K
IAogb3BfZ3JvdXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLApAQCAtMzc2LDcgKzM3Niw3IEBAIG9w
X2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5hcnlPcCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpu
ZWdhdGUsCkBAIC00NDUsNyArNDQ1LDcgQEAgb3AgOmluX2J5X3ZhbCwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmluX2J5X2lkLApAQCAtNDc3LDcgKzQ3Nyw4IEBAIG9wIDpn
ZXRfYnlfaWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OCw3
ICs0ODksNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpn
ZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTQ5OSw3ICs1MDAsNyBAQCBvcCA6Z2V0X2J5X3ZhbF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBA
IC01MDksNyArNTEwLDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgfQpAQCAtNTIwLDcgKzUyMSw3
IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0cnlfZ2V0
X2J5X2lkLApAQCAtNTMwLDcgKzUzMSw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAg
IH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3MSw4ICs1NzIsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6
IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAgLTU4Myw3ICs1ODQsNyBAQCBvcCA6Z2V0X3By
aXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLApAQCAtNjMyLDcgKzYzMyw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Miw3ICs2
NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAog
b3AgOmRlbF9ieV92YWwsCkBAIC04NDIsNyArODQzLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOnRhaWxfY2FsbCwKQEAgLTg1NCw3ICs4NTUsNyBAQCBvcCA6
dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBA
IC04NjcsNyArODY4LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAg
fQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgwLDggKzg4MSw4IEBAIG9wIDpjYWxsX3ZhcmFy
Z3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
YXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZCwKQEAgLTkwMSw4ICs5MDIsOCBAQCBvcCA6
dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRt
cHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIyLDgg
KzkyMyw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3QsCkBAIC05MzUsNyArOTM2LDcgQEAgb3Ag
OmNvbnN0cnVjdCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y29uc3RydWN0X3Zh
cmFyZ3MsCkBAIC05NDgsOCArOTQ5LDggQEAgb3AgOmNvbnN0cnVjdF92YXJhcmdzLAogICAgICAg
ICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5j
bHVkaW5nVGhpczogdW5zaWduZWQKQEAgLTEwMjgsNyArMTAyOSw3IEBAIG9wIDpnZXRfZnJvbV9z
Y29wZSwKICAgICAgICAgICAgIHN0cnVjdHVyZTogV3JpdGVCYXJyaWVyQmFzZVtTdHJ1Y3R1cmVd
LAogICAgICAgICB9LAogICAgICAgICBvcGVyYW5kOiB1aW50cHRyX3QsICNvZmZzZXQgNgotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsICMgb2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosICMgb2Zmc2V0IDcKICAgICB9LAogICAgIG1ldGFkYXRhX2luaXRpYWxp
emVyczogewogICAgICAgICBnZXRQdXRJbmZvOiA6Z2V0UHV0SW5mbywKQEAgLTEwNjUsNyArMTA2
Niw3IEBAIG9wIDpnZXRfZnJvbV9hcmd1bWVudHMsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1
bWVudHMsCkBAIC0xMTczLDcgKzExNzQsNyBAQCBvcCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAg
ICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9y
TWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg3LDggKzExODgsOCBAQCBvcCA6ZW51bWVyYXRvcl9n
ZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAg
IGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjAyLDcg
KzEyMDMsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9ieV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAg
ICB9CiAKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG9wIDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6
IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyNDksMTEgKzEyNTAsMTEgQEAgb3Ag
Oml0ZXJhdG9yX29wZW4sCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBpdGVyYXRp
b25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAgICBpdGVyYWJsZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgaXRl
cmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
LSAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbmV4dFByb2ZpbGU6
IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3lt
Ym9sQ2FsbDogbmlsLApAQCAtMTI3MiwxMyArMTI3MywxMyBAQCBvcCA6aXRlcmF0b3JfbmV4dCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxl
LAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBjYWxs
TGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
Ci0gICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBuZXh0UmVz
dWx0OiBKU1ZhbHVlLApAQCAtMTMyMiw3ICsxMzIzLDcgQEAgb3AgOmdldF9pbnRlcm5hbF9maWVs
ZCwKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDpwdXRfaW50ZXJuYWxfZmllbGQsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5k
c0ZvckNoZWNrcG9pbnQuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDIwICs1NywyMCBAQCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwo
Qnl0ZWNvCiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3Rl
eHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRv
ck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7Ci0g
ICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9u
ZXh0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0
dXJuIG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JP
cGVuOjpnZXROZXh0OiByZXR1cm4gbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBl
bHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0
b3JfbmV4dCkgewogICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBj
YXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRS
ZXN1bHRQcm9maWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1
cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBjYXNl
IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3Vs
dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBt
ZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZTogcmV0dXJuIG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAg
ICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRh
Lm1fcHJvZmlsZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYgKzM3NCwxMCBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhWTSYgdm0sIFN0cnVjdHVyZSogCiBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKKyAgICAvLyBX
ZSBjYW4ndCBmaW5hbGl6ZSBhIEdDIHdoaWxlIGluIGhlcmUgc2luY2Ugd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8KKyAgICAvLyBtYWtlIHN1cmUgb3VyIFZhbHVlUHJvZmlsZXMgYWxsIHBvaW50IHRv
IHByb3BlciBsb2NhdGlvbnMuCisgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5pc0RlZmVycmVk
KCkpOyAKKwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBmaW5pc2hDcmVhdGlv
bkNvbW1vbih2bSk7CiAKQEAgLTQzNSw3ICs0MzksOCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5j
ZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICBhdXRvIGxpbmtf
cHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29k
ZSovLCBhdXRvJiAvKm1ldGFkYXRhKi8pIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsmXShj
b25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiBtZXRh
ZGF0YSkgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFZhbHVlUHJvZmls
ZSosIGRlY2x0eXBlKG1ldGFkYXRhLm1fcHJvZmlsZSk+KTsKICAgICAgICAgbV9udW1iZXJPZk5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgIH07CiAKQEAgLTQ5OSw5ICs1MDQsOSBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAKICAgICAgICAgTElOSyhP
cEdldEJ5SWQsIHByb2ZpbGUpCiAKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0LCBwcm9m
aWxlKQotICAgICAgICBMSU5LKE9wRW51bWVyYXRvckluQnlWYWwsIHByb2ZpbGUpCi0gICAgICAg
IExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIHByb2ZpbGUpCisgICAgICAgIExJTkso
T3BFbnVtZXJhdG9yTmV4dCkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JJbkJ5VmFsKQorICAg
ICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093blByb3BlcnR5KQogICAgICAgICBMSU5LKE9wRW51
bWVyYXRvckdldEJ5VmFsLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxl
KQpAQCAtNzYxLDYgKzc2Niw5NiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksKIAorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7CisgICAgICAg
IGlmIChtX21ldGFkYXRhKSB7CisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgICAgIHNp
emUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOworICAgICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAg
ICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVuPigpICog
MzsKKyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
TmV4dD4oKSAqIDM7CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplKTsK
KworICAgICAgICBhdXRvJiB2YWx1ZVByb2ZpbGVzID0gdW5saW5rZWRDb2RlQmxvY2stPmVuc3Vy
ZVZhbHVlUHJvZmlsZXMoc2l6ZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkKKyAgICAgICAgICAgIHZhbHVl
UHJvZmlsZXNbaV0uY2xlYXJCdWNrZXRzKCk7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUgZmlyc3QgbnVtYmVyT2ZBcmd1
bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMK
KworICAgICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBhc3NpZ24gPSBb
Jl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlID0g
JnZhbHVlUHJvZmlsZXNbaW5kZXgrK107CisKKyAgICAgICAgICAgICAgICAvLyBUaGVzZSBWYWx1
ZVByb2ZpbGVzIGNvdWxkIGJlIHN0YWxlLCBzaW5jZSBVbmxpbmtlZENvZGVCbG9jayBkb2Vzbid0
IHZpc2l0CisgICAgICAgICAgICAgICAgLy8gdGhlbSBpbiBhbnkgd2F5LiBTbyB0aGV5IGNvdWxk
IGJlIGx5aW5nIGFyb3VuZCBmcm9tIHdoZW4gc29tZSBwcmlvciBDb2RlQmxvY2sKKyAgICAgICAg
ICAgICAgICAvLyB3YXMgZXhlY3V0aW5nLCBidXQgZGllZCBhZnRlciBzdG9yaW5nIHRvIHRoZW0u
IFNvIHRvIGJlIGNvbnNlcnZhdGl2ZSwgd2UgY2xlYXIKKyAgICAgICAgICAgICAgICAvLyBhbnkg
dW5wcm9jZXNzZWQgdmFsdWVzIG5vdy4KKyAgICAgICAgICAgICAgICBwcm9maWxlLT5jbGVhckJ1
Y2tldHMoKTsKKyAgICAgICAgICAgIH07CisKKyNkZWZpbmUgVklTSVQoX19vcCkgXAorICAgICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFz
c2lnbihtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyAKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwor
ICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAg
ICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fZG9u
ZVByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX3ZhbHVlUHJvZmls
ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZGV4ID09IHNpemUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9
IDA7CisKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAor
ICAgICAgICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7CisgICAg
ICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENPVU5UKQorI3VuZGVm
IENPVU5UCisgICAgICAgICAgICBzaXplICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8T3BJdGVy
YXRvck5leHQ+KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAg
ICAgYXV0byYgYXJyYXlQcm9maWxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5lbnN1cmVBcnJheVBy
b2ZpbGVzKHNpemUpOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworCisgICAgICAg
ICAgICBhdXRvIGFzc2lnbiA9IFsmXSAoQXJyYXlQcm9maWxlKiYgcHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgIHByb2ZpbGUgPSAmYXJyYXlQcm9maWxlc1tpbmRleCsrXTsKKworICAgICAgICAg
ICAgICAgIC8vIFNlZSBjb21tZW50IGFib3ZlIGFib3V0IHdoeSB3ZSBjbGVhciBvdXQgc3RhbGUg
dmFsdWVzIGluIHZhbHVlIHByb2ZpbGVzLgorICAgICAgICAgICAgICAgIC8vIFdlIGRvIHRoZSBh
bmFsb2dvdXMgdGhpbmcgaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAg
IHByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGUgb3Bjb2Rl
cyBpbiBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFLgorICAgICAgICAgICAgLy8g
V2UgZG9uJ3QgeWV0IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGluZ3Mgd2l0aCBMTEludCBD
YWxsTGlua0luZm9zLgorI2RlZmluZSBWSVNJVChfX29wKSBcCisgICAgICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUKQorI3VuZGVmIFZJU0lUCisKKyAgICAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAg
ICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHNpemUpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhD
b250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAtOTI4LDggKzEwMjMsNiBAQCB2
b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJuYXRpdmUoVk0mIHZtLCBDCiB2b2lkIENvZGVCbG9jazo6
c2V0TnVtUGFyYW1ldGVycyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRl
cnMgPSBuZXdWYWx1ZTsKLQotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0
b3I8VmFsdWVQcm9maWxlPihPcHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAK
IENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0y
NzczLDcgKzI4NjYsNyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxl
CiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI2RlZmluZSBDQVNFMShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOworICAgICAgICByZXR1
cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOwog
CiAjZGVmaW5lIENBU0UyKE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKQEAgLTI3ODUs
MTMgKzI4NzgsNiBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlCiAj
dW5kZWYgQ0FTRTEKICN1bmRlZiBDQVNFMgogCi0gICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29kZUlE
OiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigp
OwotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAg
ICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJy
YXlMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yOTAwLDE5ICsyOTg2LDE5IEBAIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICAgICAgICAgIG51bVNh
bXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBw
cm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0Lgog
ICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7CiAgICAgICAg
IGlmIChpc0FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocHJv
ZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAg
ICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7Ci0gICAgICAg
IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfSk7CiAKICAgICBpZiAobV9tZXRh
ZGF0YSkgewogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsmXShhdXRvJiBt
ZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fYnVmZmVyKSB7CiAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2goWyZdKFZhbHVlUHJvZmlsZUFuZFZp
cnR1YWxSZWdpc3RlciYgcHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKQEAgLTI5MzEsMTAgKzMwMTcsOCBAQCB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxBcnJheVByZWRpY3Rpb25zKCkKIHsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7Ci0gICAgCiAgICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQcm9maWxlJiBw
cm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
ciwgdGhpcyk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMp
OwogICAgIH0pOwogICAgIAogICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShB
cnJheUFsbG9jYXRpb25Qcm9maWxlJiBwcm9maWxlKSB7CkBAIC0zMTY0LDcgKzMyNDgsNyBAQCBW
YWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9mCiAKICNkZWZpbmUgQ0FTRShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIGlu
c3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX3Byb2ZpbGU7CiAKICAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDQVNFKQogCkBAIC0zMTgxLDEwICsz
MjY1LDEwIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2YKICAgICB9
CiB9CiAKLVNwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZv
ckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCkKK1NwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9m
aWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KQogewogICAgIGlmIChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSA9IHRyeUdldFZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiB2YWx1
ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICByZXR1
cm4gdmFsdWVQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICByZXR1cm4g
U3BlY05vbmU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDE5ICs0NzQsMTYgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzLnNpemUoKSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9udW1QYXJhbWV0ZXJzKSB8fCAhT3B0aW9uczo6dXNlSklUKCkp
OwotICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpOworICAgICAg
ICByZXR1cm4gbnVtUGFyYW1ldGVycygpOwogICAgIH0KIAogICAgIFZhbHVlUHJvZmlsZSYgdmFs
dWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7IC8vIFRoaXMgaXMgb25seSBjYWxsZWQgZnJv
bSB0aGUgdmFyaW91cyBKSVQgY29tcGlsZXJzIG9yIHBsYWNlcyB0aGF0IGZpcnN0IGNoZWNrIG51
bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzIGJlZm9yZSBjYWxsaW5nIHRoaXMuCi0gICAgICAg
IFZhbHVlUHJvZmlsZSYgcmVzdWx0ID0gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXNbYXJndW1lbnRJ
bmRleF07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB1bmxpbmtlZENv
ZGVCbG9jaygpLT52YWx1ZVByb2ZpbGUoYXJndW1lbnRJbmRleCk7CiAgICAgfQogCiAgICAgVmFs
dWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwot
ICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZXgpOworICAgIFNwZWN1bGF0
ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoVmFsdWVQ
cm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwpAQCAtMTAxNSw3ICsxMDEy
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxvY2tzLgogICAgIENvbXByZXNz
ZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxl
czsKICNlbmRpZgotICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVl
UHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJf
bXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjIgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29ucwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNk
ZWZpbmUgVklTSVQoX19vcCkgXAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7
CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyBmdW5jKCptZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKIAogI3VuZGVmIFZJU0lUCiAKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeyAKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZh
bHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNl
KTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmls
ZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOwogICAgICAgICB9KTsK
ICAgICB9ICAgCiAKQEAgLTY0LDEzICs2NCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5j
KQogewogICAgIGlmIChtX21ldGFkYXRhKSB7Ci0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAobWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAg
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KICNkZWZpbmUgVklTSVQxKF9fb3ApIFwKLSAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyht
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19v
cD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7
IH0pOwogCiAjZGVmaW5lIFZJU0lUMihfX29wKSBcCiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxf
X29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8u
bV9hcnJheVByb2ZpbGUpOyB9KTsKQEAgLTgyLDcgKzc3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZv
ckVhY2hBcnJheVByb2ZpbGUoY29ucwogI3VuZGVmIFZJU0lUMgogCiAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAgICAgZnVu
YygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwogICAgICAgICB9KTsKICAgICB9CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0
YS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZE1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCw2IEBAIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdl
dEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIpOwogCi1zdHJ1Y3QgR2V0QnlJZE1vZGVNZXRh
ZGF0YUFycmF5TGVuZ3RoIHsKLSAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotfTsKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIp
OwotCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCB7CiAgICAgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwpAQCAtOTAs
NyArODUsNiBAQCB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB9OwogICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRh
dGFVbnNldCB1bnNldE1vZGU7Ci0gICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9h
ZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YSkgPT0g
MTYpOwpAQCAtMTEzLDcgKzEwNyw2IEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAg
ICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2Rl
OwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5zZXRNb2RlOwotICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5ndGhNb2RlOwogICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiAgICAgfTsKICAgICBH
ZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTM3LDcgKzEzMCw2IEBAIGlubGluZSB2b2lkIEdldEJ5SWRN
b2RlTWV0YWRhdGE6OnNldFVuc2UKIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNl
dEFycmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aDsKLSAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGU7
CiAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcu
CiAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyAr
MzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigpIHsgfQog
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3NlZExhenlP
cGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQordm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKQotICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogfQogCiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
OjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIExhenlP
cGVyYW5kVmFsdQogfQogCiBTcGVjdWxhdGVkVHlwZSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBh
cnNlcjo6cHJlZGljdGlvbigKLSAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKKyAgICBjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5
KSBjb25zdAogewogICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0SWZQ
cmVzZW50KGtleSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm4gU3BlY05vbmU7
CiAgICAgCi0gICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOworICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDYgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBu
dW1FbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGF1dG8qIHN0YXJ0ID0gYml0d2lzZV9jYXN0PHR5
cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldChPcDo6b3Bjb2RlSUQpKTsKKyAgICAgICAgYXV0byog
ZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldEltcGwoT3A6Om9w
Y29kZUlEICsgMSkpOworICAgICAgICByZXR1cm4gZW5kIC0gc3RhcnQ7CisgICAgfQorCiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKICAgICB2b2lkIHJlZigpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2
ICsxMzksNyBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4CiAgICAg
bWFjcm8oT3BFbnVtZXJhdG9yR2V0QnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JJbkJ5
VmFsKSBcCiAgICAgbWFjcm8oT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNy
byhPcEdldEJ5SWQpIFwKIAogI2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9BTExP
Q0FUSU9OX1BST0ZJTEUobWFjcm8pIFwKICAgICBtYWNybyhPcE5ld0FycmF5KSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxOSw2ICs0MTksOCBAQCBwcml2
YXRlOgogICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgRml4
ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAg
IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb247CisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX3ZhbHVl
UHJvZmlsZXM7IC8vIFRoZSBmaXJzdCBudW1QYXJhbWV0ZXJzKCkgYXJlIGFyZ3VtZW50IHByb2Zp
bGVzLgorICAgIEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4gbV9hcnJheVByb2ZpbGVzOwogICAg
IHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+OwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZl
Y3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVu
Y3Rpb25FeHByczsKQEAgLTQ1Niw2ICs0NTgsMjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
b3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCisgICAg
VmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3ZhbHVlUHJvZmlsZXNbaV07CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8VmFsdWVQ
cm9maWxlPiYgZW5zdXJlVmFsdWVQcm9maWxlcyh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlmICghbV92YWx1ZVByb2ZpbGVzLnNp
emUoKSkKKyAgICAgICAgICAgIG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJv
ZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWVQcm9maWxlcy5zaXpl
KCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgfQorCisg
ICAgRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPiYgZW5zdXJlQXJyYXlQcm9maWxlcyh1bnNpZ25l
ZCBzaXplKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlm
ICghbV9hcnJheVByb2ZpbGVzLnNpemUoKSkKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9
IEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fYXJyYXlQcm9maWxlcy5zaXplKCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX2FycmF5
UHJvZmlsZXM7CisgICAgfQorCiBwcml2YXRlOgogICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJn
ZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDExIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVC
YXNlIHsKICAgICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAgICB7CisgICAgICAgIGNsZWFy
QnVja2V0cygpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCdWNrZXRzKCkKKyAgICB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKQog
ICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAg
ICAgfQpAQCAtOTIsOSArOTcsOSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9u
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQorICAgIENTdHJpbmcgYnJpZWZEZXNj
cmlwdGlvbigpCiAgICAgewotICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICAgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgICAgIG91dC5wcmludCgicHJlZGljdGluZyAi
LCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CkBAIC0xMTgsMTAgKzEyMywxMCBAQCBz
dHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8g
VXBkYXRlcyB0aGUgcHJlZGljdGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4gTmV2ZXIgY2Fs
bCB0aGlzIGZyb20gYW55IHRocmVhZAotICAgIC8vIHRoYXQgaXNuJ3QgZXhlY3V0aW5nIHRoZSBj
b2RlLgotICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImKQorICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpCiAgICAgeworICAgICAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNh
bGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIC8vIFRoZSBpbXBvcnQg
cGFydCBpcyB0aGF0IHdlIGRvbid0IGVuZCB1cCBjb3JydXB0aW5nIGFueSB2YWx1ZXMuCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7
CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tp
XSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQpAQCAtMTU2LDYgKzE2MSw3IEBAIHN0cnVjdCBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6
IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1
ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoVmFsdWVQcm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLUFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKK0FycmF5TW9kZSBBcnJheU1vZGU6OmZyb21P
YnNlcnZlZChBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29s
IG1ha2VTYWZlKQogewogICAgIEFycmF5OjpDbGFzcyBub25BcnJheTsKLSAgICBpZiAocHJvZmls
ZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikpCisgICAgaWYgKHByb2ZpbGUt
PnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpKQogICAgICAgICBub25BcnJheSA9IEFycmF5
OjpPcmlnaW5hbE5vbkFycmF5OwogICAgIGVsc2UKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6
Tm9uQXJyYXk7CkBAIC02MywyNyArNjMsMjcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9i
c2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb252ZXJ0cyA9IEFycmF5
OjpBc0lzOwogCi0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVy
dHMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAg
ICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0
aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH07CiAKLSAgICBBcnJheU1vZGVzIG9i
c2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CisgICAgQXJyYXlN
b2RlcyBvYnNlcnZlZCA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwogICAgIHN3aXRj
aCAob2JzZXJ2ZWQpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlVucHJvZmlsZWQpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhOb25BcnJheSk6Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9m
aWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKKyAgICAgICAgaWYgKGFj
dGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdB
cmd1bWVudHMsIG5vbkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBh
Y3Rpb24pOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRp
Y3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2Nr
ZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbikud2l0aFNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFVuZGVjaWRlZCk6CiAgICAgICAgIGlmIChhY3Rp
b24gPT0gQXJyYXk6OldyaXRlKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdBcmd1bWVudHMsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBB
cnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFycmF5LCBBcnJheTo6
T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1h
a2VTYWZlKTsKICAgICAgICAgCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJy
YXlzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRo
VW5kZWNpZGVkKToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2Zp
bGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0
aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0Fy
Z3VtZW50cywgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6
OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVj
dFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEludDMyKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9y
aW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoSW50MzIpOgpAQCAtMTEzLDUwICsxMTMsNTAgQEAgQXJy
YXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICByZXR1cm4gaGFu
ZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpDb250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAgICBj
YXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwg
bm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFy
cmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFn
ZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIs
IHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJy
YXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6
QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlT
dG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHBy
b2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJh
eXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1
dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBl
ZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpQ
b3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24p
LndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDhBcnJheU1vZGU6
Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQ4QXJyYXksIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAg
Y2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tl
ciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJ
bnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJv
ZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6SW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4QXJy
YXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2Ug
VWludDE2QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9hdDMy
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXks
IG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQzMkFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwg
bWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkZsb2F0NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0ludDY0
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdVaW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgZGVm
YXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkgdHlw
ZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9uLXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1ha2Ug
c2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhlIG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29udmVy
dCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlmIChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJBWV9N
T0RFUykKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
bG9ja2VyKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5n
UHJlZGljdGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICBpZiAoKG9ic2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheSkpICYmIHByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQ
cmVkaWN0aW9ucykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgICAgICAKICAgICAgICAgQXJyYXk6OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3M7CkBAIC0xODMsNyArMTgzLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6
ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcnJheUNsYXNz
ID0gQXJyYXk6OlBvc3NpYmx5QXJyYXk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh3b3JkKTsKICAgICB9CiAgICAgCi0g
ICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CisgICAgc3Rh
dGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7CiAgICAgCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJh
eTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewpAQCAtMTkwLDEzICsxOTAs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cywgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAot
ICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBj
b25zdAorICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShBcnJheVByb2Zp
bGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6
U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsKIAogICAgICAgICBpZiAobWFrZVNhZmUpCiAgICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgICAgICBlbHNl
IGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIpKQorICAgICAgICBlbHNlIGlmIChw
cm9maWxlLT5tYXlTdG9yZVRvSG9sZSgpKQogICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFy
cmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBB
cnJheTo6SW5Cb3VuZHM7CkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CiAgICAgfQogICAgIAotICAgIEFy
cmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJy
YXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3
aXRoUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAg
ICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNzOwogCiAgICAgICAgIGlmIChp
c0pTQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewotICAg
ICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJy
YXlNb2Rlcyhsb2NrZXIpOworICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcygpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgeworICAgICAg
ICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlN
b2RlcygpOwogICAgICAgICAgICAgICAgIGlmIChoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJh
eU1vZGVzKSAmJiAhaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCiAgICAgICAgICAg
ICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbENvcHlPbldyaXRlQXJyYXk7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5
TW9kZXMpICYmIGhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9kZXMpKQpAQCAtMjIyLDcgKzIy
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3Mg
PSBhcnJheUNsYXNzKCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3Mo
bXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUs
IG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH0KICAg
ICAKICAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uRnJvbUZvckNvZGVC
bG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewotICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbjsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBw
cmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJ
bmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBjb2RlQmxvY2stPnZhbHVl
UHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCgpKTsKICAgICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0gbV92bS0+ZnV6emVyQWdlbnQo
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2VudCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05ODMsMTAgKzk3OSw5IEBAIHBy
aXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYgcHJvZmls
ZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOwotICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmls
ZS5vdXRPZkJvdW5kcyhsb2NrZXIpOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2Jz
ZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jayk7CisgICAgICAgIGJvb2wgbWFrZVNhZmUgPSBwcm9maWxlLm91dE9mQm91bmRzKCk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZCgmcHJvZmlsZSwgYWN0aW9uLCBt
YWtlU2FmZSk7CiAgICAgfQogCiAgICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIw
NTgsOSArMjA1Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmkK
ICAgICAgICAgICAgIC8vIGFyZ3VtZW50cyByZWNlaXZlZCBpbnNpZGUgdGhlIGNhbGxlZS4gQnV0
IHRoYXQgcHJvYmFibHkgd29uJ3QgbWF0dGVyIGZvciBtb3N0CiAgICAgICAgICAgICAvLyBjYWxs
cy4KICAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSB7Ci0gICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAg
ICAgICAgVmFsdWVQcm9maWxlJiBwcm9maWxlID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JB
cmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAg
dmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50
ID0gYWRkVG9HcmFwaChudW1TZXRBcmd1bWVudHMgPj0gbWFuZGF0b3J5TWluaW11bSA/IFNldEFy
Z3VtZW50TWF5YmUgOiBTZXRBcmd1bWVudERlZmluaXRlbHksIE9wSW5mbyh2YXJpYWJsZSkpOwpA
QCAtNjMwNSw3ICs2Mjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgaWYgKHNob3VsZENvbXBpbGVBc0dldEJ5SWQpCiAgICAgICAgICAg
ICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRl
bnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldEJ5
SWQsIG5leHRPcGNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAg
IEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2Ug
aXQgb25seSB1c2VzIHRocmVlIGNoaWxkCiAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCiAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NDE5MgpAQCAtNzA3NSwxMSArNzA2OSw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1
bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBz
ZWVuQXJndW1lbnRzOwogCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9j
ayk7Ci0KICAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVB
bmRWaXJ0dWFsUmVnaXN0ZXImIHByb2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Y2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKQEAgLTc0MzEsNyArNzQyMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFs
bG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBk
b0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKIAotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJs
ZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJl
YWQpOwogICAgICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRo
b3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWUpKTsKIAogICAgICAgICAgICAgICAgIHsKQEAgLTgzMjYsNyArODMx
OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7Ci0gICAgICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAg
ICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2Rl
LmFzV29yZCgpKSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2luX2J5X3ZhbCk7CkBAIC04NDEwLDcgKzg0MDIsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVy
YXRvcl9uZXh0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVudW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJl
YWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0
KGJ5dGVjb2RlLm1faW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChi
eXRlY29kZS5tX2VudW1lcmF0b3IpOwpAQCAtODQ0Miw3ICs4NDM0LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1v
ZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJh
eTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsK
IAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODUw
Niw3ICs4NDk4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfaW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigp
OwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2Rl
IGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5
OjpSZWFkKTsKIAogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFz
ZSkpOwogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlO
YW1lKSk7CkBAIC04NTIxLDcgKzg1MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpS
ZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODg4MSw3ICs4ODczLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZQogICAgIH0KIAogICAgIGlm
ICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKLSAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBB
cnJheTo6V3JpdGUpOworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3Jp
dGUpOwogCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOwogICAgICAgICBhZGRWYXJBcmdD
aGlsZChwcm9wZXJ0eSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNDIsOSArNDA0Miw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIEFycmF5
OjpSZWFkKTsKICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkgewotICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJs
b2NrKTsKLSAgICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxv
Y2tlciwgYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOworICAgICAgICAgICAgYXJy
YXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24ocHJvZmlsZWRCbG9jayk7CisgICAg
ICAgICAgICBhcnJheU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChhcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9
PSBBcnJheTo6VW5wcm9maWxlZCkgewogICAgICAgICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJy
YXkgb3BlcmF0aW9ucywgaXQgbWFrZXMgc2Vuc2UgdG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAg
ICAgICAgICAgIC8vIGFjY2Vzc2VzIGFzIEZvcmNlRXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRo
ZXIgdGhhbiB1c2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgyMTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAK
ICAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkgPj0gMSk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9j
aygpLT5tX2xvY2spOwotICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRo
aXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZy
b20KICAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBv
cHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgogICAgICAgICAgICAgYXV0byYgYXJndW1l
bnRzID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52
YWx1ZTsKIAogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAg
ICAgICAgICAgICBWYWx1ZVByb2ZpbGUmIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7Ci0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10t
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAotICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKKyAgICAgICAgICAgICAgICBh
cmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw3ICsz
MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4uLik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0
YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2b2lkPgorICAgICAgICBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJv
ZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4KICAgICAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpOwogCiAgICAgICAgIHZvaWQg
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbEdQUiwgQXJyYXlQ
cm9maWxlKiwgUmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBA
IGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci1pbmxpbmUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4g
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkK
K2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRh
dGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFs
dWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkKIHsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjgsMTAgKzEw
MjgsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsT3B0aW1pCiAgICAgICAg
IGlmICghaXNDb3B5T25Xcml0ZShiYXNlT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2Ny
aXB0LmlzSW50MzIoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9j
aywgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywgUHV0
S2luZDo6Tm90RGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTEwOTgsMTAgKzEwOTYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5
VmFsCiAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAm
JiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
IGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHByb2ZpbGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI0MTIsMTAgKzI0MDgsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0QnlWCiAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJz
Y3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAg
ICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgcmVwYXRjaEFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlz
aW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICBB
cnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJy
YXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3BlcnR5LCByZWdUMSk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSklUOjpnZW5lcmF0
ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QKICAgICBpZiAoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKSB7
CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAg
ICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAg
ICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fdmFsdWU7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9m
aWxlOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwpAQCAtNDgyLDcgKzQ4Miw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAgdmFsdWUg
PSBieXRlY29kZS5tX3ZhbHVlOwogICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1v
ZGU7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwotICAgICAgICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgICAg
ICBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAgICAgfTsKIAogICAgIGlmIChp
c0RpcmVjdCkKQEAgLTExMDgsMTEgKzExMDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQoY29uc3QgSW5zdHJ1CiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJl
Z1QwLCBiYXNlVlJlZyk7CiAgICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIEp1bXAgbm90
QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsKLSAgICAgICAgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5n
dGhNb2RlLmFycmF5UHJvZmlsZSwgcmVnVDEpOwotICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUu
bGluayh0aGlzKTsKLSAgICB9CisgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCByZWdUMSk7
CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCkBA
IC0xNTExLDcgKzE1MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5z
dHJ1CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxl
KiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3Bl
cnR5LCByZWdUMSk7CkBAIC0xNTM4LDcgKzE1MzUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5fYnlfdmFsKGNvbnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7
CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAK
ICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4
KytdOwogCkBAIC0yMzkzLDcgKzIzOTAsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJCiAgICAgfQogCiAgICAgc3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51
bWJlck9mQnVja2V0cyA9PSAxKTsKLSAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKG1ldGFkYXRh
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MobWV0YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxl
KSksIHJlZ1QxKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBWYWx1ZVByb2Zp
bGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwogCiAgICAgcmV0KCk7CiAKQEAgLTI0NDksNyAr
MjQ0Nyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICBD
YWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgSnVtcCBleGNl
cHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0g
ICAgaml0LnN0b3JlNjQocmVnVDAsIEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIs
IE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSkpOworICAgIGppdC5sb2FkUHRy
KEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihNZXRh
ZGF0YSwgbV9wcm9maWxlKSksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBqaXQu
c3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgVmFsdWVQ
cm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KCkpKTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogCiAj
aWYgQ1BVKFg4Nl82NCkKQEAgLTI4NTQsNyArMjg1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5kZXggPSBieXRlY29k
ZS5tX2luZGV4OwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU5hbWUgPSBieXRlY29kZS5t
X3Byb3BlcnR5TmFtZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9IGJ5dGVjb2Rl
Lm1fZW51bWVyYXRvcjsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9h
cnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGU7CiAKICAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjgyMTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQo
Q2FsbEZyYW1lKiBjYWwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9QUk9G
SUxFX1ZBTFVFKHZhbHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAor
ICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS0+bV9idWNrZXRz
WzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAj
ZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFy
Z2V0VGFnKSBcCkBAIC03NjEsNyArNzYxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJv
dG90eXBlQ2FjaGUoSgogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiB9CiAK
LXN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFk
YXRhJiBtZXRhZGF0YSkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBH
ZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODI0LDggKzgyNCw5IEBAIHN0YXRpYyBK
U1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QKICAgICB9IGVsc2UgaWYgKCFMTElOVF9B
TFdBWVNfQUNDRVNTX1NMT1cgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIG1ldGFkYXRhLnNldEFycmF5TGVu
Z3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJv
ZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7
CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihjb2RlQmxvY2spOwogICAgIH0KQEAgLTg0MSw3ICs4NDIsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsK
IAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpOwogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOwogfQogCkBAIC04NTcsMTAgKzg1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaXRlcmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKQogICAgICAg
ICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0gICAgSlNWYWx1ZSByZXN1
bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRl
cmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywg
Z2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
ICAgIG5leHRSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLT5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApA
QCAtODc3LDEwICs4NzgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJh
dG9yXwogICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVy
Zm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0
dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBt
ZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwogICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2RvbmVQcm9m
aWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9F
TkQoKTsKIH0KIApAQCAtODk0LDEwICs4OTUsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2l0ZXJhdG9yXwogICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1
cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVy
Zm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0
dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0
YSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVl
LCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLCBudWxscHRyKTsKICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKICAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3Zh
bHVlUHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
TExJTlRfRU5EKCk7CiB9CiAKQEAgLTEwMjQsNyArMTAyNSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0KICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQz
Ml90IGkgPSAqaW5kZXg7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAmbWV0
YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
ID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFz
ZVZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldElu
ZGV4KGkpKSB7CkBAIC0xNDI5LDcgKzE0MzAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaW5fYnlfdmFsCiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wSW5CeVZhbD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jayk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0
aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX2Jhc2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENv
bW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3By
b3BlcnR5KSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlz
aW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNSArNjgsMTYgQEAgbWFjcm8gbWFr
ZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZwogICAgIGZuKG1hY3JvICh2YWx1ZSkKICAg
ICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0MykKKyAgICAgICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0MSwgdDMsIHQyKQogICAgICAgICBn
ZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIHQxLCA4XQogICAgICAgICBk
aXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCi0gICAgc3RvcmVxIHZhbHVlLCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzW21ldGFkYXRhXQor
bWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB2
YWx1ZSwgc2NyYXRjaCkKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9m
aWxlTmFtZSVbbWV0YWRhdGFdLCBzY3JhdGNoCisgICAgc3RvcmVxIHZhbHVlLCBWYWx1ZVByb2Zp
bGU6Om1fYnVja2V0c1tzY3JhdGNoXQogZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBi
eXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgpAQCAtODcs
NyArODgsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1CiAgICAg
Z2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lzdGVyLCB0MSkKICAgICBzdG9y
ZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgdDIs
IHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgcjAsIHQzKQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBAIC0xNTA5LDcgKzE1MTAsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsCiAgICAgYmluZXEgdDAsIHQx
LCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRh
dGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQx
LCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0
MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0Miwg
dDAsIHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZERpcmVjdFNsb3c6CkBAIC0xNTE4
LDcgKzE1MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsCiBl
bmQpCiAKICMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGluIHQzCi1tYWNybyBwZXJmb3Jt
R2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmls
ZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKK21hY3JvIHBlcmZvcm1H
ZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxl
TmFtZSwgc2xvd0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuLCBkb0FycmF5UHJvZmlsZSkK
ICAgICBtZXRhZGF0YSh0MiwgdDEpCiAgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAKQEAgLTE1MjksNyArMTUzMCw3IEBA
IG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwKICAgICBiaW5lcSB0MCwg
dDEsIHNsb3dMYWJlbAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQ
cm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4odDAp
CiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CkBAIC0xNTQwLDI3ICsxNTQxLDI3IEBAIG1hY3JvIHBl
cmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZz
ZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRh
ZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkKIAog
Lm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1v
ZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBtb3ZlIHQzLCB0MAotICAgIGFy
cmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQorICAgIGRvQXJyYXlQcm9m
aWxlKHQwLCB0MiwgdDUsIHQxKQogICAgIGJ0aXogdDAsIElzQXJyYXksIHNsb3dMYWJlbAogICAg
IGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFiZWwKICAgICBsb2FkQ2FnZWRKU1Zh
bHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwLCB0MSkKICAgICBsb2FkaSAtc2l6ZW9m
IEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhb
dDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAogICAgIG9ycSBudW1iZXJUYWcsIHQw
Ci0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQw
KQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0
MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkVW5zZXQ6CiAgICAgbG9hZGkgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAog
ICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkKQorICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCwgdDEp
CiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQogCiBlbmQKQEAgLTE1NjgsNyArMTU2OSwxMCBA
QCBlbmQKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldChtX2Jhc2Us
IHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0
QnlJZFNsb3cpCi0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRh
ZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikK
KyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQsIG1fbW9kZU1ldGFkYXRhLCBtX3By
b2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuLAorICAgICAgICBt
YWNybyAoY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gxLCBzY3JhdGNoMikK
KyAgICAgICAgICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX2FycmF5UHJv
ZmlsZSwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gxLCBzY3JhdGNoMikK
KyAgICAgICAgZW5kKQogCiAub3BHZXRCeUlkU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCkBAIC0xNTc3LDcgKzE1ODEsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVy
U2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0
YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjAp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjAsIHQzKQogICAg
IHJldHVybihyMCkKIAogZW5kKQpAQCAtMTY5OCw3ICsxNzAyLDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3Vs
dCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZXEg
cmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZh
bCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZh
bCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0LCBzY3JhdGNoKQogICAgICAgICBkaXNwYXRjaCgpCiAg
ICAgZW5kCiAKQEAgLTE3MTksNyArMTcyMyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X3ZhbCwgT3BHZXQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0Miwg
dDAsIC5vcEdldEJ5VmFsU2xvdykKIAogICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxl
KE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKKyAgICBh
cnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUs
IHQxLCB0MykKIAogICAgIGdldChtX3Byb3BlcnR5LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCkBAIC0xNzU5LDcgKzE3
NjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAKIC5vcEdl
dEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlW
YWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE3NzIsNyArMTc3Niw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJT
ZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0
YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIw
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCwgdDMpCiAg
ICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNzk0LDcgKzE3OTgsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUsCiAKICAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1l
OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVP
ZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9w
cm9maWxlLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJv
ZmlsZSwgdDIsIHQwLCB0MykKICAgICByZXR1cm4odDApCiAKIC5vcEdldFByaXZhdGVOYW1lU2xv
dzoKQEAgLTE4OTcsNyArMTkwMSw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWMKIAogICAgICAgICAub3V0T2ZCb3VuZHM6CiAgICAgICAgICAgICBiaWFlcSB0Mywg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9y
TGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRPZkJvdW5kcwotICAgICAgICAgICAgc3RvcmViIDEs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9s
ZVt0NV0KKyAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGVbdDVdLCB0MgorICAgICAgICAgICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9t
YXlTdG9yZVRvSG9sZVt0Ml0KICAgICAgICAgICAgIGFkZGkgMSwgdDMsIHQyCiAgICAgICAgICAg
ICBzdG9yZWkgdDIsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5s
ZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0KICAgICAgICAgICAgIGptcCAuc3RvcmVSZXN1bHQKQEAg
LTE5MDcsNyArMTkxMiw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWMKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQxLCAub3BQ
dXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0
MCkKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MykKICAgICAgICAgZ2V0
KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6
ZSwgdDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIHN4aTJxIHQzLCB0MwpAQCAtMTk2
Miw3ICsxOTY3LDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Ywog
ICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5Ogot
ICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAgc3RvcmViIDEsIEFycmF5UHJv
ZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0KICAgICAgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6
Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJpYiB0MywgLXNpemVvZiBJbmRleGlu
Z0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgLm9w
UHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAgICAgICBhZGRpIDEsIHQzLCB0MQpA
QCAtMTk3MCw3ICsxOTc2LDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogCiAg
ICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoKLSAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRPZkJvdW5kc1t0NV0KKyAgICAgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQxCisg
ICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0T2ZCb3VuZHNbdDFdCiAgICAgLm9w
UHV0QnlWYWxTbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bj
b2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKQEAgLTI2NjIsNyArMjY2OSw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAgICBtYWNybyBnZXRQcm9wZXJ0
eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1
XSwgdDEKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQot
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQyKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQyLCB0
MykKICAgICAgICAgcmV0dXJuKHQyKQogICAgIGVuZAogCkBAIC0yNjcwLDE0ICsyNjc3LDE0IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAgICAgICAgbG9hZHAg
T3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MAogICAgICAgICBsb2Fk
cSBbdDBdLCB0MAogICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQwKQotICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MykKICAgICAgICAg
cmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0Q2xvc3VyZVZhcigpCiAgICAgICAg
IGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAg
ICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW3QwLCB0MSwgOF0sIHQwCi0g
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCisg
ICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDAsIHQz
KQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAgLTMwMDIsNyArMzAwOSw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3BlbiwgT3AKIAogICAgIGxvYWRWYXJpYWJs
ZShnZXQsIG1faXRlcmF0b3IsIHQzKQogICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLml0ZXJh
dG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdwotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRl
cmF0b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3Blbkdl
bmVyaWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoKQor
ICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwg
bV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0
YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoLCBtYWNybyhhLCBiLCBjLCBkKSBlbmQpCiAKIC5p
dGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKQEAgLTMwNjEsNyArMzA2OCw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3AKIAogICAgIGxvYWRWYXJpYWJs
ZShnZXQsIG1fdmFsdWUsIHQzKQogICAgIGJ0cW56IHQzLCBub3RDZWxsTWFzaywgLmdldERvbmVT
bG93Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fZG9uZU1vZGVN
ZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3Rv
cmVEb25lQW5kSm1wVG9HZXRWYWx1ZSkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJh
dG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3cs
IHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlLCBtYWNybyhhLCBiLCBj
LCBkKSBlbmQpCiAKIC5nZXREb25lU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQpAQCAtMzA4Niw3ICszMDkzLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcAogICAgICMgUmVsb2FkIHRoZSBuZXh0
IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBtYXkgaGF2ZSBjbG9iYmVyZWQg
dDMuCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMpCiAgICAgIyBXZSBkb24ndCBu
ZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQgaXMgYSBjZWxsIGhlcmUgc2luY2Ug
d2Ugd2lsbCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUuCi0gICAgcGVyZm9ybUdldEJ5SURI
ZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRhdGEsIG1fdmFsdWVQcm9maWxl
LCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVWYWx1ZUFuZERpc3BhdGNoKQor
ICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFk
YXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3Jl
VmFsdWVBbmREaXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkgZW5kKQogCiAuZ2V0VmFsdWVTbG93
OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfZ2V0X3Zh
bHVlKQpAQCAtMzE1OSw3ICszMTY2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9lbnVtZXJh
dG9yX2dldF9ieQogICAgIGxvYWRxIGNvbnN0ZXhwciAoKG9mZnNldEluQnV0dGVyZmx5KGZpcnN0
T3V0T2ZMaW5lT2Zmc2V0KSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKVt0MCwgdDIsIDhdLCB0
MgogCiAuZG9uZToKLSAgICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1fcHJv
ZmlsZSwgdDUsIHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEVudW1lcmF0b3JHZXRCeVZhbCwgbV9w
cm9maWxlLCB0NSwgdDIsIHQzKQogICAgIHJldHVybih0MikKIAogLmdldFNsb3dQYXRoOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg0LDExICsxMjg0
LDEyIEBAIG1hY3JvIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcE4KICAgICBsb2Fk
aSBMTEludFJldHVyblBDW2Nmcl0sIFBDCiBlbmQKIAotbWFjcm8gYXJyYXlQcm9maWxlKG9mZnNl
dCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCittYWNybyBhcnJheVBy
b2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaDEsIHNj
cmF0Y2gyKQogICAgIGNvbnN0IGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdUeXBlCiAgICAgY29uc3Qg
aW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZSAKLSAgICBsb2FkaSBKU0NlbGw6Om1f
c3RydWN0dXJlSURbY2VsbF0sIHNjcmF0Y2gKLSAgICBzdG9yZWkgc2NyYXRjaCwgb2Zmc2V0ICsg
QXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbbWV0YWRhdGFdCisgICAgbG9hZHAg
b2Zmc2V0W21ldGFkYXRhXSwgc2NyYXRjaDIKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHNjcmF0Y2gxCisgICAgc3RvcmVpIHNjcmF0Y2gxLCBBcnJheVByb2ZpbGU6Om1f
bGFzdFNlZW5TdHJ1Y3R1cmVJRFtzY3JhdGNoMl0KICAgICBsb2FkYiBKU0NlbGw6Om1faW5kZXhp
bmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIApAQCAtMTYxMiw4ICsxNjEz
LDggQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnUwogICAgIGFkZHAg
LXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRo
ZSBwZWVwaG9sZQogICAgIGFzc2VydChtYWNybyAob2spIGJwZ3RlcSB0MCwgMCwgb2sgZW5kKQog
ICAgIGJ0cHogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3Vu
dGVkQXJyYXk6Om1fZGF0YVt0MV0sIHQzCi0gICAgYnRweiB0MywgLmFyZ3VtZW50UHJvZmlsZURv
bmUgIyBXaGVuIHdlIGNhbid0IEpJVCwgd2UgZG9uJ3QgYWxsb2NhdGUgYW55IGFyZ3VtZW50IHZh
bHVlIHByb2ZpbGVzLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDFdLCB0
MworICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3ZhbHVlUHJvZmlsZXMgKyBGaXhlZFZl
Y3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDNdLCB0MwogICAgIG11
bHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3Ro
IHJlZHVjdGlvbiEKICAgICBsc2hpZnRwIDMsIHQwICMgb2Zmc2V0IG9mIGxhc3QgSlNWYWx1ZSBh
cmd1bWVudHMgb24gdGhlIHN0YWNrLgogICAgIGFkZHAgdDIsIHQzICMgcG9pbnRlciB0byBlbmQg
b2YgVmFsdWVQcm9maWxlIGFycmF5IGluIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmls
ZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29k
ZVNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDcgQEAgQnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNv
ZGVTZXF1ZW5jZShDb2RlQgogICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZkFyZ3VtZW50VmFsdWVQ
cm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2Rl
QmxvY2stPm1fbG9jayk7Ci0gICAgICAgIENTdHJpbmcgZGVzY3JpcHRpb24gPSBjb2RlQmxvY2st
PnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGkpLmJyaWVmRGVzY3JpcHRpb24obG9ja2VyKTsKKyAg
ICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJn
dW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbigpOwogICAgICAgICBpZiAoIWRlc2NyaXB0aW9uLmxl
bmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG91dC5yZXNldCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgUFJPRklMRV9WQUxVRV9JTih2YWx1ZV9fLCBtX3Byb2ZpbGUpCiAK
ICNkZWZpbmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgcHJvZmlsZU5hbWUpIGRvIHsgXAotICAg
ICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1sw
XSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5wcm9maWxlTmFtZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiBzdGF0aWMgdm9pZCB0aHJvd0FyaXR5Q2hl
Y2tTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dT
Y29wZSYgc2NvcGUpCkBAIC04ODcsNyArODg3LDcgQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJl
dHVyblR5cGUgaXRlcmF0bwogICAgIEpTQ2VsbCogaXRlcmFibGUgPSBHRVQoYnl0ZWNvZGUubV9p
dGVyYWJsZSkuanNWYWx1ZSgpLmFzQ2VsbCgpOwogICAgIGlmIChhdXRvIGFycmF5SXRlcmF0b3Ig
PSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KHZtLCBpdGVyYXRvcikpIHsKICAgICAg
ICAgaWYgKGF1dG8gYXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXkqPih2bSwgaXRlcmFibGUp
KSB7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZS5vYnNlcnZlU3RydWN0
dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVy
YWJsZVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChhcnJheS0+c3RydWN0dXJlSUQoKSk7CiAK
ICAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0
YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0
QXJyYXk7CiAgICAgICAgICAgICBhdXRvJiBpbmRleFNsb3QgPSBhcnJheUl0ZXJhdG9yLT5pbnRl
cm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KTsKQEAgLTk5Myw3ICs5OTMs
NyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAgICAgQVNTRVJU
KCFiYXNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBi
YXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsK
LSAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZS0+c3Ry
dWN0dXJlSUQoKSk7CisgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1
cmVJRChiYXNlLT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgIEpTU3RyaW5nKiBuYW1lID0gZW51bWVy
YXRvci0+Y29tcHV0ZU5leHQoZ2xvYmFsT2JqZWN0LCBiYXNlLCBpbmRleCwgbW9kZSk7CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CkBAIC0xMDE5LDcgKzEwMTksNyBAQCBKU0NfREVGSU5FX0NPTU1P
Tl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRNb2RlOiB7CiAgICAgICAgIGlmIChMSUtF
TFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9m
aWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkp
OworICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJ
RChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBSRVRVUk5fUFJP
RklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bmRleCkpKTsKICAgICB9CiAgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0
cnVjdHVyZU1vZGU6IHsKQEAgLTEwMzQsNyArMTAzNCw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfZW4KIAogICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
OjpHZW5lcmljTW9kZTogewogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIG1vZGUg
IT0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1Y3R1cmVNb2RlKQotICAgICAgICAg
ICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQo
KSk7CiAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhHRVQoYnl0ZWNvZGUubV9w
cm9wZXJ0eU5hbWUpLmpzVmFsdWUoKSk7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Ry
aW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2VuCiAgICAgfQogCiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChi
eXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsKLSAgICBSRVRVUk4oanNCb29sZWFu
KENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdHJp
bmcsICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKENv
bW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdHJpbmcs
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOwogfQogCiBKU0NfREVGSU5FX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSkK
</data>
<flag name="commit-queue"
          id="461021"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437778</attachid>
            <date>2021-09-09 13:55:23 -0700</date>
            <delta_ts>2021-09-09 14:32:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>107423</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAyMS0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMgZm9yIG5vbi1jYWxsIG9wY29kZXMgaW50bworICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jay4gVGhpcyB3YXksIHRoZSBkYXRhIGlzIHNoYXJlZCBiZXR3
ZWVuIHRoZSBsaW5rZWQgQ29kZUJsb2NrcworICAgICAgICBvZiB0aGUgc2FtZSBVbmxpbmtlZENv
ZGVCbG9jay4gVGhlIHByb2ZpbGluZyBiZXQgaGVyZSBpcyB0aGF0IHdoZW4gdGhlIHNhbWUgY29k
ZQorICAgICAgICBydW5zIGluIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QsIGl0IGxhcmdlbHkg
cnVucyBpbiB0aGUgc2FtZSB3YXkuIFdlJ3ZlIG1hZGUKKyAgICAgICAgdGhpcyBzYW1lIGJldCBp
biBvdGhlciB3YXlzIHdpdGggb3VyIHByb2ZpbGluZywgYW5kIGl0IGxhcmdlbHkgbWFrZXMgc2Vu
c2UKKyAgICAgICAgdG8gZG8gZm9yIFZhbHVlUHJvZmlsZSBhbmQgQXJyYXlQcm9maWxlIHNpbmNl
IHRoZXkgYm90aCBob2xkIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaW5kZXBlbmRlbnQgZGF0YS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBpdCBzbyB3ZSBubyBsb25n
ZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAgICBwcm9jZXNzaW5nIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxvdyBtdWx0aXBsZSBjb21waWxl
cgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNoIG90aGVyIHdoZW4gdXBkYXRp
bmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAgICAgSXQgbWF5IGVuZCB1cCB3
aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1dCBpdCB3b24ndCBjb3JydXB0
IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIG1lYXN1cmVkIGFzIGEgMSUgc3BlZWR1
cCBvbiBTcGVlZG9tZXRlcjIuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbik6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZWRBcnJheU1vZGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjptYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6Om1heVN0b3JlVG9Ib2xlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjpvdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNo
ZWNrcG9pbnQuaDoKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVycyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2
ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGljdGlv
bnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rp
b25Gb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNo
QXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJyYXlMZW5ndGhNb2RlKToKKyAg
ICAgICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChK
U0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyOjpwcmVkaWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxl
Lmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZW5zdXJlVmFsdWVQcm9maWxlcyk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjplbnN1cmVBcnJheVByb2ZpbGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxl
QmFzZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6
OmNsZWFyQnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmJyaWVmRGVz
Y3JpcHRpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RC
dWNrZXQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2Rl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBj
b25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRv
TWFrZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U6
OnJ1bik6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNv
ZGUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0
QnlWYWxPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OmRpcmVjdFB1dEJ5VmFsT3B0aW1pemUpOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfZnJvbV9zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZvcm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5
dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorCiAyMDIxLTA5
LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYWRkIGZpbGVzIHRvIHhjb2RlcHJvagpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsMTggKzExOCwyMyBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFt
JiBvdXQsIEFyCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkJpZ1VpbnQ2NEFycmF5TW9kZSIp
OwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQg
QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlSUQpCisgICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAg
IFN0cnVjdHVyZUlEIGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOworICAgIGlmICghaWQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9sYXN0U2VlblN0cnVj
dHVyZUlEKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ss
IGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOworICAgIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQordm9pZCBBcnJheVByb2Zp
bGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkKIHsKKyAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxk
IGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuIFRoYXQgd29uJ3QgbGVhZAor
ICAgIC8vIHRvIGFueSBmb3JtIG9mIGNvcnJ1cHRpb24sIGJ1dCBjb3VsZCBjYXVzZSB1cyB0byBn
byBkb3duICFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKKyAgICAvLyBwYXRoIHNpbXVsdGFu
ZW91c2x5LgogICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZXNGcm9tU3RydWN0
dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0
UnVuUHJ1bmluZwpAQCAtMTYzLDEzICsxNjgsMTMgQEAgdm9pZCBBcnJheVByb2ZpbGU6Om9ic2Vy
dmVJbmRleGVkUmVhZChWTQogICAgIH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVm
RGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
Y29kZUJsb2NrKQorQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
Y29kZUJsb2NrKTsKLSAgICByZXR1cm4gYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhs
b2NrZXIpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2spOworICAgIHJl
dHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CiB9CiAKLUNTdHJpbmcgQXJy
YXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhv
dXRVcGRhdGluZygpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJp
bnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDIyICsyMTcsMjIg
QEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOyB9CiAgICAgdm9p
ZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7Ci0gICAgdm9p
ZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgdm9pZCBjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlN
b2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVk
QXJyYXlNb2RlczsgfQotICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzOyB9CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7
IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9Ib2xlKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KLSAgICBib29sIG91dE9m
Qm91bmRzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZC
b3VuZHM7IH0KKyAgICBib29sIG1heVN0b3JlVG9Ib2xlKCkgY29uc3QgeyByZXR1cm4gbV9tYXlT
dG9yZVRvSG9sZTsgfQorICAgIGJvb2wgb3V0T2ZCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX291
dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOyB9CiAKLSAgICBD
U3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJs
b2NrKik7Ci0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihDb2Rl
QmxvY2sqKTsKKyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsK
ICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIG9wIDpnZXRf
YXJndW1lbnQsCiAgICAgICAgIGluZGV4OiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmFyZ3VtZW50X2NvdW50LApAQCAtMTgzLDcgKzE4Myw3IEBA
IG9wIDp0b190aGlzLAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhY2hlZFN0cnVjdHVyZUlE
OiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMsCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6Y2hlY2tfdGR6LApAQCAtMzA5LDcgKzMwOSw3IEBAIG9wX2dyb3Vw
IDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcCA6Yml0bm90LApAQCAt
MzE4LDcgKzMxOCw3IEBAIG9wIDpiaXRub3QsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZQorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3BfZ3JvdXAg
OlVuYXJ5T3AsCkBAIC0zNjMsNyArMzYzLDcgQEAgb3AgOnRvX29iamVjdCwKICAgICAgICAgbWVz
c2FnZTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0K
IAogb3BfZ3JvdXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLApAQCAtMzc2LDcgKzM3Niw3IEBAIG9w
X2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5hcnlPcCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpu
ZWdhdGUsCkBAIC00NDUsNyArNDQ1LDcgQEAgb3AgOmluX2J5X3ZhbCwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmluX2J5X2lkLApAQCAtNDc3LDcgKzQ3Nyw4IEBAIG9wIDpn
ZXRfYnlfaWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OCw3
ICs0ODksNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpn
ZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTQ5OSw3ICs1MDAsNyBAQCBvcCA6Z2V0X2J5X3ZhbF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBA
IC01MDksNyArNTEwLDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgfQpAQCAtNTIwLDcgKzUyMSw3
IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0cnlfZ2V0
X2J5X2lkLApAQCAtNTMwLDcgKzUzMSw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAg
IH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3MSw4ICs1NzIsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6
IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAgLTU4Myw3ICs1ODQsNyBAQCBvcCA6Z2V0X3By
aXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLApAQCAtNjMyLDcgKzYzMyw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Miw3ICs2
NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAog
b3AgOmRlbF9ieV92YWwsCkBAIC04NDIsNyArODQzLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOnRhaWxfY2FsbCwKQEAgLTg1NCw3ICs4NTUsNyBAQCBvcCA6
dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBA
IC04NjcsNyArODY4LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAg
fQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgwLDggKzg4MSw4IEBAIG9wIDpjYWxsX3ZhcmFy
Z3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
YXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZCwKQEAgLTkwMSw4ICs5MDIsOCBAQCBvcCA6
dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRt
cHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIyLDgg
KzkyMyw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3QsCkBAIC05MzUsNyArOTM2LDcgQEAgb3Ag
OmNvbnN0cnVjdCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y29uc3RydWN0X3Zh
cmFyZ3MsCkBAIC05NDgsOCArOTQ5LDggQEAgb3AgOmNvbnN0cnVjdF92YXJhcmdzLAogICAgICAg
ICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5j
bHVkaW5nVGhpczogdW5zaWduZWQKQEAgLTEwMjgsNyArMTAyOSw3IEBAIG9wIDpnZXRfZnJvbV9z
Y29wZSwKICAgICAgICAgICAgIHN0cnVjdHVyZTogV3JpdGVCYXJyaWVyQmFzZVtTdHJ1Y3R1cmVd
LAogICAgICAgICB9LAogICAgICAgICBvcGVyYW5kOiB1aW50cHRyX3QsICNvZmZzZXQgNgotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsICMgb2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosICMgb2Zmc2V0IDcKICAgICB9LAogICAgIG1ldGFkYXRhX2luaXRpYWxp
emVyczogewogICAgICAgICBnZXRQdXRJbmZvOiA6Z2V0UHV0SW5mbywKQEAgLTEwNjUsNyArMTA2
Niw3IEBAIG9wIDpnZXRfZnJvbV9hcmd1bWVudHMsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1
bWVudHMsCkBAIC0xMTczLDcgKzExNzQsNyBAQCBvcCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAg
ICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9y
TWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg3LDggKzExODgsOCBAQCBvcCA6ZW51bWVyYXRvcl9n
ZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAg
IGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjAyLDcg
KzEyMDMsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9ieV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAg
ICB9CiAKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG9wIDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6
IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyNDksMTEgKzEyNTAsMTEgQEAgb3Ag
Oml0ZXJhdG9yX29wZW4sCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBpdGVyYXRp
b25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAgICBpdGVyYWJsZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgaXRl
cmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
LSAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbmV4dFByb2ZpbGU6
IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3lt
Ym9sQ2FsbDogbmlsLApAQCAtMTI3MiwxMyArMTI3MywxMyBAQCBvcCA6aXRlcmF0b3JfbmV4dCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxl
LAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBjYWxs
TGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
Ci0gICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBuZXh0UmVz
dWx0OiBKU1ZhbHVlLApAQCAtMTMyMiw3ICsxMzIzLDcgQEAgb3AgOmdldF9pbnRlcm5hbF9maWVs
ZCwKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDpwdXRfaW50ZXJuYWxfZmllbGQsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5k
c0ZvckNoZWNrcG9pbnQuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDIwICs1NywyMCBAQCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwo
Qnl0ZWNvCiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3Rl
eHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRv
ck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7Ci0g
ICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9u
ZXh0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0
dXJuIG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JP
cGVuOjpnZXROZXh0OiByZXR1cm4gbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBl
bHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0
b3JfbmV4dCkgewogICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBj
YXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRS
ZXN1bHRQcm9maWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1
cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBjYXNl
IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3Vs
dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBt
ZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZTogcmV0dXJuIG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAg
ICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRh
Lm1fcHJvZmlsZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYgKzM3NCwxMCBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhWTSYgdm0sIFN0cnVjdHVyZSogCiBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKKyAgICAvLyBX
ZSBjYW4ndCBmaW5hbGl6ZSBhIEdDIHdoaWxlIGluIGhlcmUgc2luY2Ugd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8KKyAgICAvLyBtYWtlIHN1cmUgb3VyIFZhbHVlUHJvZmlsZXMgYWxsIHBvaW50IHRv
IHByb3BlciBsb2NhdGlvbnMuCisgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5pc0RlZmVycmVk
KCkpOyAKKwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBmaW5pc2hDcmVhdGlv
bkNvbW1vbih2bSk7CiAKQEAgLTQzNSw3ICs0MzksOCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5j
ZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICBhdXRvIGxpbmtf
cHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29k
ZSovLCBhdXRvJiAvKm1ldGFkYXRhKi8pIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsmXShj
b25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiBtZXRh
ZGF0YSkgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFZhbHVlUHJvZmls
ZSosIGRlY2x0eXBlKG1ldGFkYXRhLm1fcHJvZmlsZSk+KTsKICAgICAgICAgbV9udW1iZXJPZk5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgIH07CiAKQEAgLTQ5OSw5ICs1MDQsOSBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAKICAgICAgICAgTElOSyhP
cEdldEJ5SWQsIHByb2ZpbGUpCiAKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0LCBwcm9m
aWxlKQotICAgICAgICBMSU5LKE9wRW51bWVyYXRvckluQnlWYWwsIHByb2ZpbGUpCi0gICAgICAg
IExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIHByb2ZpbGUpCisgICAgICAgIExJTkso
T3BFbnVtZXJhdG9yTmV4dCkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JJbkJ5VmFsKQorICAg
ICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093blByb3BlcnR5KQogICAgICAgICBMSU5LKE9wRW51
bWVyYXRvckdldEJ5VmFsLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxl
KQpAQCAtNzYxLDYgKzc2Niw5NiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksKIAorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7CisgICAgICAg
IGlmIChtX21ldGFkYXRhKSB7CisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgICAgIHNp
emUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOworICAgICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAg
ICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVuPigpICog
MzsKKyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
TmV4dD4oKSAqIDM7CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplKTsK
KworICAgICAgICBhdXRvJiB2YWx1ZVByb2ZpbGVzID0gdW5saW5rZWRDb2RlQmxvY2stPmVuc3Vy
ZVZhbHVlUHJvZmlsZXMoc2l6ZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkKKyAgICAgICAgICAgIHZhbHVl
UHJvZmlsZXNbaV0uY2xlYXJCdWNrZXRzKCk7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUgZmlyc3QgbnVtYmVyT2ZBcmd1
bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMK
KworICAgICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBhc3NpZ24gPSBb
Jl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlID0g
JnZhbHVlUHJvZmlsZXNbaW5kZXgrK107CisKKyAgICAgICAgICAgICAgICAvLyBUaGVzZSBWYWx1
ZVByb2ZpbGVzIGNvdWxkIGJlIHN0YWxlLCBzaW5jZSBVbmxpbmtlZENvZGVCbG9jayBkb2Vzbid0
IHZpc2l0CisgICAgICAgICAgICAgICAgLy8gdGhlbSBpbiBhbnkgd2F5LiBTbyB0aGV5IGNvdWxk
IGJlIGx5aW5nIGFyb3VuZCBmcm9tIHdoZW4gc29tZSBwcmlvciBDb2RlQmxvY2sKKyAgICAgICAg
ICAgICAgICAvLyB3YXMgZXhlY3V0aW5nLCBidXQgZGllZCBhZnRlciBzdG9yaW5nIHRvIHRoZW0u
IFNvIHRvIGJlIGNvbnNlcnZhdGl2ZSwgd2UgY2xlYXIKKyAgICAgICAgICAgICAgICAvLyBhbnkg
dW5wcm9jZXNzZWQgdmFsdWVzIG5vdy4KKyAgICAgICAgICAgICAgICBwcm9maWxlLT5jbGVhckJ1
Y2tldHMoKTsKKyAgICAgICAgICAgIH07CisKKyNkZWZpbmUgVklTSVQoX19vcCkgXAorICAgICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFz
c2lnbihtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyAKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwor
ICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAg
ICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fZG9u
ZVByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX3ZhbHVlUHJvZmls
ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZGV4ID09IHNpemUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9
IDA7CisKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAor
ICAgICAgICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7CisgICAg
ICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENPVU5UKQorI3VuZGVm
IENPVU5UCisgICAgICAgICAgICBzaXplICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8T3BJdGVy
YXRvck5leHQ+KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAg
ICAgYXV0byYgYXJyYXlQcm9maWxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5lbnN1cmVBcnJheVBy
b2ZpbGVzKHNpemUpOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworCisgICAgICAg
ICAgICBhdXRvIGFzc2lnbiA9IFsmXSAoQXJyYXlQcm9maWxlKiYgcHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgIHByb2ZpbGUgPSAmYXJyYXlQcm9maWxlc1tpbmRleCsrXTsKKworICAgICAgICAg
ICAgICAgIC8vIFNlZSBjb21tZW50IGFib3ZlIGFib3V0IHdoeSB3ZSBjbGVhciBvdXQgc3RhbGUg
dmFsdWVzIGluIHZhbHVlIHByb2ZpbGVzLgorICAgICAgICAgICAgICAgIC8vIFdlIGRvIHRoZSBh
bmFsb2dvdXMgdGhpbmcgaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAg
IHByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGUgb3Bjb2Rl
cyBpbiBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFLgorICAgICAgICAgICAgLy8g
V2UgZG9uJ3QgeWV0IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGluZ3Mgd2l0aCBMTEludCBD
YWxsTGlua0luZm9zLgorI2RlZmluZSBWSVNJVChfX29wKSBcCisgICAgICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUKQorI3VuZGVmIFZJU0lUCisKKyAgICAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAg
ICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHNpemUpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhD
b250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAtOTI4LDggKzEwMjMsNiBAQCB2
b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJuYXRpdmUoVk0mIHZtLCBDCiB2b2lkIENvZGVCbG9jazo6
c2V0TnVtUGFyYW1ldGVycyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRl
cnMgPSBuZXdWYWx1ZTsKLQotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0
b3I8VmFsdWVQcm9maWxlPihPcHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAK
IENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0y
NzczLDcgKzI4NjYsNyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxl
CiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI2RlZmluZSBDQVNFMShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOworICAgICAgICByZXR1
cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOwog
CiAjZGVmaW5lIENBU0UyKE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKQEAgLTI3ODUs
MTMgKzI4NzgsNiBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlCiAj
dW5kZWYgQ0FTRTEKICN1bmRlZiBDQVNFMgogCi0gICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29kZUlE
OiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigp
OwotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAg
ICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJy
YXlMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yOTAwLDE5ICsyOTg2LDE5IEBAIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICAgICAgICAgIG51bVNh
bXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBw
cm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0Lgog
ICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7CiAgICAgICAg
IGlmIChpc0FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocHJv
ZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAg
ICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7Ci0gICAgICAg
IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfSk7CiAKICAgICBpZiAobV9tZXRh
ZGF0YSkgewogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsmXShhdXRvJiBt
ZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fYnVmZmVyKSB7CiAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2goWyZdKFZhbHVlUHJvZmlsZUFuZFZp
cnR1YWxSZWdpc3RlciYgcHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKQEAgLTI5MzEsMTAgKzMwMTcsOCBAQCB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxBcnJheVByZWRpY3Rpb25zKCkKIHsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7Ci0gICAgCiAgICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQcm9maWxlJiBw
cm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
ciwgdGhpcyk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMp
OwogICAgIH0pOwogICAgIAogICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShB
cnJheUFsbG9jYXRpb25Qcm9maWxlJiBwcm9maWxlKSB7CkBAIC0zMTY0LDcgKzMyNDgsNyBAQCBW
YWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9mCiAKICNkZWZpbmUgQ0FTRShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIGlu
c3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX3Byb2ZpbGU7CiAKICAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDQVNFKQogCkBAIC0zMTgxLDEwICsz
MjY1LDEwIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2YKICAgICB9
CiB9CiAKLVNwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZv
ckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCkKK1NwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9m
aWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KQogewogICAgIGlmIChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSA9IHRyeUdldFZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiB2YWx1
ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICByZXR1
cm4gdmFsdWVQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICByZXR1cm4g
U3BlY05vbmU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDE5ICs0NzQsMTYgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzLnNpemUoKSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9udW1QYXJhbWV0ZXJzKSB8fCAhT3B0aW9uczo6dXNlSklUKCkp
OwotICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpOworICAgICAg
ICByZXR1cm4gbnVtUGFyYW1ldGVycygpOwogICAgIH0KIAogICAgIFZhbHVlUHJvZmlsZSYgdmFs
dWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7IC8vIFRoaXMgaXMgb25seSBjYWxsZWQgZnJv
bSB0aGUgdmFyaW91cyBKSVQgY29tcGlsZXJzIG9yIHBsYWNlcyB0aGF0IGZpcnN0IGNoZWNrIG51
bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzIGJlZm9yZSBjYWxsaW5nIHRoaXMuCi0gICAgICAg
IFZhbHVlUHJvZmlsZSYgcmVzdWx0ID0gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXNbYXJndW1lbnRJ
bmRleF07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB1bmxpbmtlZENv
ZGVCbG9jaygpLT52YWx1ZVByb2ZpbGUoYXJndW1lbnRJbmRleCk7CiAgICAgfQogCiAgICAgVmFs
dWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwot
ICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZXgpOworICAgIFNwZWN1bGF0
ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoVmFsdWVQ
cm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwpAQCAtMTAxNSw3ICsxMDEy
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxvY2tzLgogICAgIENvbXByZXNz
ZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxl
czsKICNlbmRpZgotICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVl
UHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJf
bXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjIgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29ucwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNk
ZWZpbmUgVklTSVQoX19vcCkgXAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7
CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyBmdW5jKCptZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKIAogI3VuZGVmIFZJU0lUCiAKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeyAKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZh
bHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNl
KTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmls
ZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOwogICAgICAgICB9KTsK
ICAgICB9ICAgCiAKQEAgLTY0LDEzICs2NCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5j
KQogewogICAgIGlmIChtX21ldGFkYXRhKSB7Ci0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAobWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAg
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KICNkZWZpbmUgVklTSVQxKF9fb3ApIFwKLSAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyht
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19v
cD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7
IH0pOwogCiAjZGVmaW5lIFZJU0lUMihfX29wKSBcCiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxf
X29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8u
bV9hcnJheVByb2ZpbGUpOyB9KTsKQEAgLTgyLDcgKzc3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZv
ckVhY2hBcnJheVByb2ZpbGUoY29ucwogI3VuZGVmIFZJU0lUMgogCiAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAgICAgZnVu
YygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwogICAgICAgICB9KTsKICAgICB9CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0
YS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZE1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCw2IEBAIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdl
dEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIpOwogCi1zdHJ1Y3QgR2V0QnlJZE1vZGVNZXRh
ZGF0YUFycmF5TGVuZ3RoIHsKLSAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotfTsKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIp
OwotCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCB7CiAgICAgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwpAQCAtOTAs
NyArODUsNiBAQCB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB9OwogICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRh
dGFVbnNldCB1bnNldE1vZGU7Ci0gICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9h
ZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YSkgPT0g
MTYpOwpAQCAtMTEzLDcgKzEwNyw2IEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAg
ICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2Rl
OwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5zZXRNb2RlOwotICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5ndGhNb2RlOwogICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiAgICAgfTsKICAgICBH
ZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTM3LDcgKzEzMCw2IEBAIGlubGluZSB2b2lkIEdldEJ5SWRN
b2RlTWV0YWRhdGE6OnNldFVuc2UKIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNl
dEFycmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aDsKLSAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGU7
CiAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcu
CiAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyAr
MzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigpIHsgfQog
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3NlZExhenlP
cGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQordm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKQotICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogfQogCiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
OjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIExhenlP
cGVyYW5kVmFsdQogfQogCiBTcGVjdWxhdGVkVHlwZSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBh
cnNlcjo6cHJlZGljdGlvbigKLSAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKKyAgICBjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5
KSBjb25zdAogewogICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0SWZQ
cmVzZW50KGtleSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm4gU3BlY05vbmU7
CiAgICAgCi0gICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOworICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDYgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBu
dW1FbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGF1dG8qIHN0YXJ0ID0gYml0d2lzZV9jYXN0PHR5
cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldChPcDo6b3Bjb2RlSUQpKTsKKyAgICAgICAgYXV0byog
ZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldEltcGwoT3A6Om9w
Y29kZUlEICsgMSkpOworICAgICAgICByZXR1cm4gZW5kIC0gc3RhcnQ7CisgICAgfQorCiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKICAgICB2b2lkIHJlZigpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2
ICsxMzksNyBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4CiAgICAg
bWFjcm8oT3BFbnVtZXJhdG9yR2V0QnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JJbkJ5
VmFsKSBcCiAgICAgbWFjcm8oT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNy
byhPcEdldEJ5SWQpIFwKIAogI2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9BTExP
Q0FUSU9OX1BST0ZJTEUobWFjcm8pIFwKICAgICBtYWNybyhPcE5ld0FycmF5KSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxOSw2ICs0MTksOCBAQCBwcml2
YXRlOgogICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgRml4
ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAg
IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb247CisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX3ZhbHVl
UHJvZmlsZXM7IC8vIFRoZSBmaXJzdCBudW1QYXJhbWV0ZXJzKCkgYXJlIGFyZ3VtZW50IHByb2Zp
bGVzLgorICAgIEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4gbV9hcnJheVByb2ZpbGVzOwogICAg
IHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+OwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZl
Y3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVu
Y3Rpb25FeHByczsKQEAgLTQ1Niw2ICs0NTgsMjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
b3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCisgICAg
VmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3ZhbHVlUHJvZmlsZXNbaV07CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8VmFsdWVQ
cm9maWxlPiYgZW5zdXJlVmFsdWVQcm9maWxlcyh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlmICghbV92YWx1ZVByb2ZpbGVzLnNp
emUoKSkKKyAgICAgICAgICAgIG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJv
ZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWVQcm9maWxlcy5zaXpl
KCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgfQorCisg
ICAgRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPiYgZW5zdXJlQXJyYXlQcm9maWxlcyh1bnNpZ25l
ZCBzaXplKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlm
ICghbV9hcnJheVByb2ZpbGVzLnNpemUoKSkKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9
IEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fYXJyYXlQcm9maWxlcy5zaXplKCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX2FycmF5
UHJvZmlsZXM7CisgICAgfQorCiBwcml2YXRlOgogICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJn
ZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDExIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVC
YXNlIHsKICAgICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAgICB7CisgICAgICAgIGNsZWFy
QnVja2V0cygpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCdWNrZXRzKCkKKyAgICB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKQog
ICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAg
ICAgfQpAQCAtOTIsOSArOTcsOSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9u
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQorICAgIENTdHJpbmcgYnJpZWZEZXNj
cmlwdGlvbigpCiAgICAgewotICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICAgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgICAgIG91dC5wcmludCgicHJlZGljdGluZyAi
LCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CkBAIC0xMTgsMTAgKzEyMywxMCBAQCBz
dHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8g
VXBkYXRlcyB0aGUgcHJlZGljdGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4gTmV2ZXIgY2Fs
bCB0aGlzIGZyb20gYW55IHRocmVhZAotICAgIC8vIHRoYXQgaXNuJ3QgZXhlY3V0aW5nIHRoZSBj
b2RlLgotICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImKQorICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpCiAgICAgeworICAgICAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNh
bGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIC8vIFRoZSBpbXBvcnQg
cGFydCBpcyB0aGF0IHdlIGRvbid0IGVuZCB1cCBjb3JydXB0aW5nIGFueSB2YWx1ZXMuCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7
CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tp
XSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQpAQCAtMTU2LDYgKzE2MSw3IEBAIHN0cnVjdCBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6
IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1
ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoVmFsdWVQcm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLUFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKK0FycmF5TW9kZSBBcnJheU1vZGU6OmZyb21P
YnNlcnZlZChBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29s
IG1ha2VTYWZlKQogewogICAgIEFycmF5OjpDbGFzcyBub25BcnJheTsKLSAgICBpZiAocHJvZmls
ZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikpCisgICAgaWYgKHByb2ZpbGUt
PnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpKQogICAgICAgICBub25BcnJheSA9IEFycmF5
OjpPcmlnaW5hbE5vbkFycmF5OwogICAgIGVsc2UKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6
Tm9uQXJyYXk7CkBAIC02MywyNyArNjMsMjcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9i
c2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb252ZXJ0cyA9IEFycmF5
OjpBc0lzOwogCi0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVy
dHMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAg
ICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0
aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH07CiAKLSAgICBBcnJheU1vZGVzIG9i
c2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CisgICAgQXJyYXlN
b2RlcyBvYnNlcnZlZCA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwogICAgIHN3aXRj
aCAob2JzZXJ2ZWQpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlVucHJvZmlsZWQpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhOb25BcnJheSk6Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9m
aWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKKyAgICAgICAgaWYgKGFj
dGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdB
cmd1bWVudHMsIG5vbkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBh
Y3Rpb24pOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRp
Y3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2Nr
ZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbikud2l0aFNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFVuZGVjaWRlZCk6CiAgICAgICAgIGlmIChhY3Rp
b24gPT0gQXJyYXk6OldyaXRlKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdBcmd1bWVudHMsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBB
cnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFycmF5LCBBcnJheTo6
T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1h
a2VTYWZlKTsKICAgICAgICAgCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJy
YXlzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRo
VW5kZWNpZGVkKToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2Zp
bGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0
aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0Fy
Z3VtZW50cywgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6
OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVj
dFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEludDMyKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9y
aW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoSW50MzIpOgpAQCAtMTEzLDUwICsxMTMsNTAgQEAgQXJy
YXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICByZXR1cm4gaGFu
ZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpDb250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAgICBj
YXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwg
bm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFy
cmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFn
ZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIs
IHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJy
YXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6
QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlT
dG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHBy
b2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJh
eXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1
dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBl
ZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpQ
b3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24p
LndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDhBcnJheU1vZGU6
Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQ4QXJyYXksIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAg
Y2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tl
ciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJ
bnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJv
ZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6SW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4QXJy
YXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2Ug
VWludDE2QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9hdDMy
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXks
IG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQzMkFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwg
bWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkZsb2F0NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0ludDY0
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdVaW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgZGVm
YXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkgdHlw
ZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9uLXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1ha2Ug
c2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhlIG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29udmVy
dCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlmIChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJBWV9N
T0RFUykKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
bG9ja2VyKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5n
UHJlZGljdGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICBpZiAoKG9ic2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheSkpICYmIHByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQ
cmVkaWN0aW9ucykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgICAgICAKICAgICAgICAgQXJyYXk6OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3M7CkBAIC0xODMsNyArMTgzLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6
ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcnJheUNsYXNz
ID0gQXJyYXk6OlBvc3NpYmx5QXJyYXk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh3b3JkKTsKICAgICB9CiAgICAgCi0g
ICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CisgICAgc3Rh
dGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7CiAgICAgCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJh
eTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewpAQCAtMTkwLDEzICsxOTAs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cywgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAot
ICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBj
b25zdAorICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShBcnJheVByb2Zp
bGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6
U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsKIAogICAgICAgICBpZiAobWFrZVNhZmUpCiAgICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgICAgICBlbHNl
IGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIpKQorICAgICAgICBlbHNlIGlmIChw
cm9maWxlLT5tYXlTdG9yZVRvSG9sZSgpKQogICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFy
cmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBB
cnJheTo6SW5Cb3VuZHM7CkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CiAgICAgfQogICAgIAotICAgIEFy
cmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJy
YXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3
aXRoUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAg
ICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNzOwogCiAgICAgICAgIGlmIChp
c0pTQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewotICAg
ICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJy
YXlNb2Rlcyhsb2NrZXIpOworICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcygpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgeworICAgICAg
ICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlN
b2RlcygpOwogICAgICAgICAgICAgICAgIGlmIChoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJh
eU1vZGVzKSAmJiAhaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCiAgICAgICAgICAg
ICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbENvcHlPbldyaXRlQXJyYXk7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5
TW9kZXMpICYmIGhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9kZXMpKQpAQCAtMjIyLDcgKzIy
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3Mg
PSBhcnJheUNsYXNzKCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3Mo
bXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUs
IG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH0KICAg
ICAKICAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uRnJvbUZvckNvZGVC
bG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewotICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbjsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBw
cmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJ
bmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBjb2RlQmxvY2stPnZhbHVl
UHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCgpKTsKICAgICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0gbV92bS0+ZnV6emVyQWdlbnQo
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2VudCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05ODMsMTAgKzk3OSw5IEBAIHBy
aXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYgcHJvZmls
ZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOwotICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmls
ZS5vdXRPZkJvdW5kcyhsb2NrZXIpOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2Jz
ZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jayk7CisgICAgICAgIGJvb2wgbWFrZVNhZmUgPSBwcm9maWxlLm91dE9mQm91bmRzKCk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZCgmcHJvZmlsZSwgYWN0aW9uLCBt
YWtlU2FmZSk7CiAgICAgfQogCiAgICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIw
NTgsOSArMjA1Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmkK
ICAgICAgICAgICAgIC8vIGFyZ3VtZW50cyByZWNlaXZlZCBpbnNpZGUgdGhlIGNhbGxlZS4gQnV0
IHRoYXQgcHJvYmFibHkgd29uJ3QgbWF0dGVyIGZvciBtb3N0CiAgICAgICAgICAgICAvLyBjYWxs
cy4KICAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSB7Ci0gICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAg
ICAgICAgVmFsdWVQcm9maWxlJiBwcm9maWxlID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JB
cmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAg
dmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50
ID0gYWRkVG9HcmFwaChudW1TZXRBcmd1bWVudHMgPj0gbWFuZGF0b3J5TWluaW11bSA/IFNldEFy
Z3VtZW50TWF5YmUgOiBTZXRBcmd1bWVudERlZmluaXRlbHksIE9wSW5mbyh2YXJpYWJsZSkpOwpA
QCAtNjMwNSw3ICs2Mjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgaWYgKHNob3VsZENvbXBpbGVBc0dldEJ5SWQpCiAgICAgICAgICAg
ICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRl
bnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldEJ5
SWQsIG5leHRPcGNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAg
IEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2Ug
aXQgb25seSB1c2VzIHRocmVlIGNoaWxkCiAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCiAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NDE5MgpAQCAtNzA3NSwxMSArNzA2OSw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1
bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBz
ZWVuQXJndW1lbnRzOwogCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9j
ayk7Ci0KICAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVB
bmRWaXJ0dWFsUmVnaXN0ZXImIHByb2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Y2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKQEAgLTc0MzEsNyArNzQyMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFs
bG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBk
b0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKIAotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJs
ZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJl
YWQpOwogICAgICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRo
b3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWUpKTsKIAogICAgICAgICAgICAgICAgIHsKQEAgLTgzMjYsNyArODMx
OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7Ci0gICAgICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAg
ICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2Rl
LmFzV29yZCgpKSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2luX2J5X3ZhbCk7CkBAIC04NDEwLDcgKzg0MDIsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVy
YXRvcl9uZXh0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVudW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJl
YWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0
KGJ5dGVjb2RlLm1faW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChi
eXRlY29kZS5tX2VudW1lcmF0b3IpOwpAQCAtODQ0Miw3ICs4NDM0LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1v
ZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJh
eTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsK
IAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODUw
Niw3ICs4NDk4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfaW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigp
OwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2Rl
IGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5
OjpSZWFkKTsKIAogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFz
ZSkpOwogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlO
YW1lKSk7CkBAIC04NTIxLDcgKzg1MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpS
ZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODg4MSw3ICs4ODczLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZQogICAgIH0KIAogICAgIGlm
ICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKLSAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBB
cnJheTo6V3JpdGUpOworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3Jp
dGUpOwogCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOwogICAgICAgICBhZGRWYXJBcmdD
aGlsZChwcm9wZXJ0eSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNDIsOSArNDA0Miw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIEFycmF5
OjpSZWFkKTsKICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkgewotICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJs
b2NrKTsKLSAgICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxv
Y2tlciwgYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOworICAgICAgICAgICAgYXJy
YXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24ocHJvZmlsZWRCbG9jayk7CisgICAg
ICAgICAgICBhcnJheU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChhcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9
PSBBcnJheTo6VW5wcm9maWxlZCkgewogICAgICAgICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJy
YXkgb3BlcmF0aW9ucywgaXQgbWFrZXMgc2Vuc2UgdG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAg
ICAgICAgICAgIC8vIGFjY2Vzc2VzIGFzIEZvcmNlRXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRo
ZXIgdGhhbiB1c2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgyMTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAK
ICAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkgPj0gMSk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9j
aygpLT5tX2xvY2spOwotICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRo
aXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZy
b20KICAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBv
cHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgogICAgICAgICAgICAgYXV0byYgYXJndW1l
bnRzID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52
YWx1ZTsKIAogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAg
ICAgICAgICAgICBWYWx1ZVByb2ZpbGUmIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7Ci0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10t
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAotICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKKyAgICAgICAgICAgICAgICBh
cmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw3ICsz
MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4uLik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0
YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2b2lkPgorICAgICAgICBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJv
ZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4KICAgICAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpOwogCiAgICAgICAgIHZvaWQg
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbEdQUiwgQXJyYXlQ
cm9maWxlKiwgUmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBA
IGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci1pbmxpbmUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4g
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkK
K2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRh
dGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFs
dWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkKIHsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjgsMTAgKzEw
MjgsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsT3B0aW1pCiAgICAgICAg
IGlmICghaXNDb3B5T25Xcml0ZShiYXNlT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2Ny
aXB0LmlzSW50MzIoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9j
aywgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywgUHV0
S2luZDo6Tm90RGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTEwOTgsMTAgKzEwOTYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5
VmFsCiAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAm
JiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
IGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHByb2ZpbGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI0MTIsMTAgKzI0MDgsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0QnlWCiAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJz
Y3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAg
ICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgcmVwYXRjaEFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdU
MywgcmVnVDIpOwogCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV92YWwoY29uc3QgSQogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwogICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsK
QEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RyCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdU
MSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCBy
ZWdUNSwgcmVnVDQpOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAg
ICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmls
ZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC03OTcsNyAr
Nzk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCBy
ZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2UsIHJlZ1QxKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZh
bEluZGV4KytdOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRl
Y29kZS5tX3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdAogICAgIGlmICho
YXNBbnlTbG93Q2FzZXMoaXRlcikpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZTsKIAogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBA
IC00MzksNyArNDM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cgogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdU
MSk7CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwo
Y29uc3QgSQogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAgICAgICAgIGVjbWFN
b2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIHByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisgICAgICAgIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMTEwOCwxMSArMTEwOCw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICAKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKICAgICAKLSAgICBpZiAoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFs
LCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwot
ICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMSk7Ci0gICAg
ICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMpOwotICAgIH0KKyAgICBpZiAoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUsIHJlZ1QxKTsKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMCk7CiAKQEAgLTE1MTEsNyArMTUwOCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTE1MzgsNyArMTUzNSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW4KICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
aW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CiAKQEAgLTIzOTMsNyArMjM5MCw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICB9CiAKICAgICBzdGF0aWNf
YXNzZXJ0KFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzID09IDEpOwotICAgIHN0b3JlNjQo
cmVnVDAsIEFkZHJlc3MobWV0YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9w
cm9maWxlKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhtZXRhZGF0YUdQUiwgT0JKRUNUX09GRlNF
VE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSwgcmVnVDEpOworICAgIHN0b3JlNjQocmVnVDAsIEFk
ZHJlc3MocmVnVDEsIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAKICAg
ICByZXQoKTsKIApAQCAtMjQ0OSw3ICsyNDQ3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSQogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9u
UHRyVGFnKTsKICAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVF
eGNlcHRpb25DaGVjayh2bSk7CiAKLSAgICBqaXQuc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2Zp
bGUpKSk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
ciwgT0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSwgR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpOworICAgIGppdC5zdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwog
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3Rlcik7CiAKICNpZiBDUFUoWDg2XzY0KQpAQCAtMjg1NCw3ICsyODUzLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKAogICAgIFZpcnR1YWxS
ZWdpc3RlciBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXg7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHBy
b3BlcnR5TmFtZSA9IGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOwotICAgIEFycmF5UHJvZmlsZSog
cHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHBy
b2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNl
czsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgaW5s
aW5lIEpTVmFsdWUgZ2V0T3BlcmFuZChDYWxsRnJhbWUqIGNhbAogICAgIH0gd2hpbGUgKGZhbHNl
KQogCiAjZGVmaW5lIExMSU5UX1BST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
aykubV9wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAg
ICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChjYWxsRnJh
bWUsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIFwKQEAgLTc2MSw3ICs3NjEsNyBAQCBzdGF0
aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKCiAgICAgdm0uaGVhcC53cml0ZUJh
cnJpZXIoY29kZUJsb2NrKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJ
RChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RhdGljIEpTVmFsdWUgcGVy
Zm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJs
b2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04
MjQsOCArODI0LDkgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdAog
ICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFz
ZVZhbHVlKSAmJiBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAg
ewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9j
ayk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJheVByb2ZpbGUpOwogICAgICAgICAg
ICAgbWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2
ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9
CiAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQpAQCAtODQx
LDcgKzg0Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxM
SW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQs
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7CiAgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTg1NywxMCArODU4LDEwIEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl8KICAgICBpZiAoIWl0ZXJh
dG9yLmlzT2JqZWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50
R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgbnVsbHB0cik7CiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fbmV4dFByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgIExMSU5UX0VORCgpOwogfQogCkBAIC04NzcsMTAgKzg3OCwxMCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09i
amVjdCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFk
YXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZt
LnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgbnVsbHB0
cik7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgZG9uZVJlZ2lzdGVyID0gcmVz
dWx0OwotICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1
Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQogCkBAIC04OTQsMTAgKzg5NSwxMCBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgUmVnaXN0ZXImIHZh
bHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CiAg
ICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IHZhbHVlUmVnaXN0ZXIuanNWYWx1ZSgpOwogCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRh
ZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1M
TEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwg
dm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEsIG51
bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIHZhbHVlUmVnaXN0ZXIg
PSByZXN1bHQ7Ci0gICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmls
ZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spLm1fdmFsdWVQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAtMTAyNCw3ICsxMDI1
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTQogICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMklu
ZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJy
YXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAg
ICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoYXNTdHJp
bmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpIHsKQEAgLTE0MjksNyArMTQzMCw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwKICAgICBMTElOVF9CRUdJTigp
OwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFsPigpOwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3Byb3BlcnR5KSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKSwgZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkp
KTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVj
dCwgZwogICAgICAgICBtb3ZlIHBheWxvYWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQy
KQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwg
dDApCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQx
LCB0MCwgdDIpCiAgICAgICAgIGdldChtX2RzdCwgdDIpCiAgICAgICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQpAQCAtODUsNyArODUsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBv
cGNvZGVTdHJ1CiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9y
ZWkgcjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCByMSwgcjAsIHQzKQogICAgIGRpc3BhdGNoKCkKIAogZW5kCkBA
IC02NzcsOSArNjc3LDEwIEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmly
b24KICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQotICAgIHN0b3JlaSB0YWcsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBUYWdPZmZz
ZXRbbWV0YWRhdGFdCi0gICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQorbWFj
cm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB0YWcs
IHBheWxvYWQsIHNjcmF0Y2gpCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
cHJvZmlsZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJv
ZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3NjcmF0Y2hdCisgICAgc3RvcmVpIHBheWxvYWQs
IFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtzY3JhdGNoXQogZW5kCiAK
IApAQCAtMTQzNyw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRf
ZGlyZWN0LAogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1
XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJ
ZERpcmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAs
IHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0
MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpA
QCAtMTQ1OCwzNyArMTQ1OSwyOSBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVT
dHJ1Y3QsCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zm
c2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAs
IHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgdDIsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFByb3Rv
TG9hZDoKLSAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5v
cEdldEJ5SWRBcnJheUxlbmd0aAorICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6
OlByb3RvTG9hZCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QzXSwgdDEKICAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKICAgICBiaW5lcSB0
MywgdDEsIHNsb3dMYWJlbAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVt
b2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9M
b2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAot
Lm9wR2V0QnlJZEFycmF5TGVuZ3RoOgotICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1v
ZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKLSAgICBtb3ZlIHQzLCB0MAotICAgIGFy
cmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElz
QXJyYXksIHNsb3dMYWJlbAotICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFi
ZWwKLSAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAotICAgIGxvYWRpIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xl
bmd0aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCi0gICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIEludDMyVGFnLCB0MCkKLSAgICBy
ZXR1cm4oSW50MzJUYWcsIHQwKQorIyBJdCBjYW4ndCBiZSBhcnJheSBsZW5ndGggc2luY2Ugd2Ug
ZG9uJ3QgdXNlIHRoaXMgZm9yIGFyYml0cmFyeSBnZXRfYnlfaWQncyB0aGF0IGNvdWxkCisjIGFj
Y2VzcyAibGVuZ3RoIi4gV2Ugb25seSB1c2UgaXQgZm9yIGl0ZXJhdG9yIG9wY29kZXMgd2hpY2gg
YXJlbid0IHVzaW5nICJsZW5ndGgiIGFzIGFuCisjIGlkZW50aWZpZXIuCiAgICAgCiAub3BHZXRC
eUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBs
b2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1v
ZGUuc3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5l
ZFRhZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgVW5kZWZpbmVkVGFnLCAwLCB0MykKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQog
CiBlbmQKQEAgLTE1MDYsMjAgKzE0OTksMjAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWQsIE9wR2V0QgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAu
b3BHZXRCeUlkU2xvdwogICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFk
YXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0NV0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlk
LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9w
cm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlk
QXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlM
ZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbW92ZSB0MywgdDIK
LSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJy
YXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCkKKyAgICBhcnJheVByb2ZpbGUo
T3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQxKQogICAg
IGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdT
aGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5
W3QzXSwgdDAKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIC5vcEdl
dEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgSW50
MzJUYWcsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIElu
dDMyVGFnLCB0MCwgdDMpCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIAogLm9wR2V0QnlJZFVu
c2V0OgpAQCAtMTUyNyw3ICsxNTIwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
aWQsIE9wR2V0QgogICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcsIDApCisgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwLCB0
MykKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRCeUlkRGVmYXVsdDoKQEAg
LTE1MzYsNyArMTUyOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdl
dEIKICAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVs
dE1vZGUuY2FjaGVkT2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmls
ZSwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1
LCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRTbG93OgpAQCAt
MTU0Niw3ICsxNTM5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QgogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChv
cF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQzKQogICAgIHJldHVybihyMSwgcjApCiAK
IGVuZCkKQEAgLTE2MjQsNyArMTYxNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X3ZhbCwgT3BHZXQKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1
bHRQYXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2Fk
KQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJU
YWcsIHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQK
IApAQCAtMTYzMyw3ICsxNjI2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldAogICAgICAgICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAg
ICBzdG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBz
dG9yZWkgc2NyYXRjaDIsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNo
MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0
Y2gzLCBzY3JhdGNoMiwgc2NyYXRjaDEpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApA
QCAtMTY0MSw3ICsxNjM0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldAogICAgIGdldChtX2Jhc2UsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQogICAgIG1vdmUgdDAs
IHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZSwgdDIsIHQ1LCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxLCB0MykKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwg
Lm9wR2V0QnlWYWxTbG93KQogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQz
CkBAIC0xNjc4LDcgKzE2NzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0CiAub3BHZXRCeVZhbE5vdEVtcHR5OgogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxLCB0MykKICAgICBkaXNw
YXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNjkxLDcgKzE2ODQs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAub3NyUmV0dXJu
UG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWws
IHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1f
cHJvZmlsZSwgdDIsIHIxLCByMCwgdDMpCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAt
MTcxMiw3ICsxNzA1LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1l
LAogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRQcml2YXRl
TmFtZVNsb3cKIAogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwg
dDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0NSwg
dDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRQcml2YXRlTmFtZVNsb3c6
CkBAIC0xNzg1LDcgKzE3NzgsNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjCiAgICAgICAgIGdldChtX2Jhc2UsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAg
ICAgICAgbW92ZSB0MSwgdDIKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5UHJvZmls
ZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0
MykKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MCwgSW50MzJUYWcsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAg
ICAgICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwCkBAIC0yNTE1LDcgKzI1
MDgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgbWFj
cm8gZ2V0UHJvcGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6
Om1fb3BlcmFuZFt0NV0sIHQzCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQo
dDMsIHQwLCB0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9w
cm9maWxlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUs
IG1fcHJvZmlsZSwgdDUsIHQxLCB0MiwgdDMpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAg
ZW5kCiAKQEAgLTI1MjQsNyArMjUxNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zy
b21fc2NvcGUsIE8KICAgICAgICAgbG9hZHAgVGFnT2Zmc2V0W3QwXSwgdDEKICAgICAgICAgbG9h
ZHAgUGF5bG9hZE9mZnNldFt0MF0sIHQyCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDEp
Ci0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEs
IHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQxLCB0MiwgdDMpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTI1MzIs
NyArMjUyNSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAg
ICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0Mwog
ICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRb
dDAsIHQzLCA4XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFi
bGVzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9m
aWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQzKQogICAgICAgICBy
ZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjgyMTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20JKHdvcmtpbmcgY29weSkKQEAgLTY4LDE1ICs2OCwxNiBAQCBtYWNybyBtYWtlUmV0dXJuUHJv
ZmlsZWQob3Bjb2RlU3RydWN0LCBnCiAgICAgZm4obWFjcm8gKHZhbHVlKQogICAgICAgICBtb3Zl
IHZhbHVlLCB0MwogICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQorICAgICAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQxLCB0MywgdDIpCiAgICAgICAgIGdldChtX2RzdCwg
dDEpCiAgICAgICAgIHN0b3JlcSB0MywgW2NmciwgdDEsIDhdCiAgICAgICAgIGRpc3BhdGNoKCkK
ICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmls
ZU5hbWUsIG1ldGFkYXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHNbbWV0YWRhdGFdCittYWNybyB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVlLCBzY3Jh
dGNoKQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJVtt
ZXRhZGF0YV0sIHNjcmF0Y2gKKyAgICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNr
ZXRzW3NjcmF0Y2hdCiBlbmQKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5dGVjb2RlIGlz
IGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCkBAIC04Nyw3ICs4OCw3IEBA
IG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnUKICAgICBnZXQoc2l6ZSwg
b3Bjb2RlU3RydWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQxKQogICAgIHN0b3JlcSByMCwgW2Nm
ciwgdDEsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDEpCi0gICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwKQorICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCwgdDMp
CiAgICAgZGlzcGF0Y2goKQogZW5kCiAKQEAgLTE1MDksNyArMTUxMCw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKICAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5
SWREaXJlY3RTbG93CiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZz
ZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkK
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCwgdDEpCiAg
ICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE1MTgsNyArMTUxOSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKIGVuZCkKIAogIyBU
aGUgYmFzZSBvYmplY3QgaXMgZXhwZWN0ZWQgaW4gdDMKLW1hY3JvIHBlcmZvcm1HZXRCeUlESGVs
cGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xv
d0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxw
ZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93
TGFiZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4sIGRvQXJyYXlQcm9maWxlKQogICAgIG1ldGFk
YXRhKHQyLCB0MSkKICAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKIApAQCAtMTUyOSw3ICsxNTMwLDcgQEAgbWFjcm8gcGVy
Zm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xh
YmVsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5h
bWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0
QnlJZFByb3RvTG9hZDoKQEAgLTE1NDAsMjcgKzE1NDEsMjcgQEAgbWFjcm8gcGVyZm9ybUdldEJ5
SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQx
CiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUu
cHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlk
QXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlM
ZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMsIHQwCi0gICAgYXJyYXlQcm9maWxl
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3Ro
TW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgZG9BcnJheVByb2ZpbGUodDAsIHQy
LCB0NSwgdDEpCiAgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCiAgICAgYnRpeiB0MCwg
SW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAogICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmpl
Y3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAsIHQxKQogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCiAg
ICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCiAgICAgb3JxIG51bWJlclRhZywgdDAKLSAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCisgICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKICAg
ICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDNdLCB0MQogICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1v
ZGVNZXRhZGF0YU5hbWUlLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYmluZXEg
dDAsIHQxLCBzbG93TGFiZWwKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmluZWQpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkLCB0MSkKICAgICByZXR1
cm4oVmFsdWVVbmRlZmluZWQpCiAKIGVuZApAQCAtMTU2OCw3ICsxNTY5LDEwIEBAIGVuZAogbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fYmFzZSwgdDApCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykK
LSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQsIG1fbW9kZU1ldGFkYXRhLCBtX3By
b2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIHBlcmZv
cm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9w
R2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4sCisgICAgICAgIG1hY3JvIChjZWxs
QW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgICAgICAg
ICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCBjZWxs
QW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgICAgICBl
bmQpCiAKIC5vcEdldEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2dldF9ieV9pZCkKQEAgLTE1NzcsNyArMTU4MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X2lkLCBPcEdldEIKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JF
eGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykK
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCwgdDMpCiAgICAgcmV0dXJuKHIw
KQogCiBlbmQpCkBAIC0xNjk4LDcgKzE3MDIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9ieV92YWwsIE9wR2V0CiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
KQogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlcSByZXN1bHQsIFtj
ZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQ1LCByZXN1bHQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQ1LCByZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApA
QCAtMTcxOSw3ICsxNzIzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0
QnlWYWxTbG93KQogCiAgICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZh
bDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQorICAgIGFycmF5UHJvZmls
ZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEsIHQzKQog
CiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQz
MihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE3NTksNyArMTc2Myw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIAogLm9wR2V0QnlWYWxEb25l
OgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIG1fcHJvZmlsZSwgdDUsIHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCB0MiwgdDMpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4
ZWRTdG9yYWdlOgpAQCAtMTc3Miw3ICsxNzc2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4
aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQ1LCB0MikK
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjApCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwLCB0MykKICAgICByZXR1cm4o
cjApCiAKIGVuZCkKQEAgLTE3OTQsNyArMTc5OCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X3ByaXZhdGVfbmFtZSwKIAogICAgIGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRh
OjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwg
dDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQy
LCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0Miwg
dDAsIHQzKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTg5
Nyw3ICsxOTAxLDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Ywog
CiAgICAgICAgIC5vdXRPZkJvdW5kczoKICAgICAgICAgICAgIGJpYWVxIHQzLCAtc2l6ZW9mIElu
ZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDBd
LCAub3BQdXRCeVZhbE91dE9mQm91bmRzCi0gICAgICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAg
ICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0
NV0sIHQyCisgICAgICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9I
b2xlW3QyXQogICAgICAgICAgICAgYWRkaSAxLCB0MywgdDIKICAgICAgICAgICAgIHN0b3JlaSB0
MiwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVi
bGljTGVuZ3RoW3QwXQogICAgICAgICAgICAgam1wIC5zdG9yZVJlc3VsdApAQCAtMTkwNyw3ICsx
OTEyLDcgQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDEsIC5vcFB1dEJ5VmFsU2xv
dykKICAgICAgICAgbW92ZSB0MSwgdDIKICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQotICAgICAg
ICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwg
dDIsIHQ1LCB0MCkKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQzKQogICAgICAgICBnZXQobV9wcm9wZXJ0
eSwgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MCwgdDMs
IC5vcFB1dEJ5VmFsU2xvdykKICAgICAgICAgc3hpMnEgdDMsIHQzCkBAIC0xOTYyLDcgKzE5Njcs
OCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGRp
c3BhdGNoKCkKIAogICAgIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHk6Ci0gICAgICAgIHN0
b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3Rv
cmVUb0hvbGVbdDVdCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9h
cnJheVByb2ZpbGVbdDVdLCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21h
eVN0b3JlVG9Ib2xlW3QxXQogICAgICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1
ZXNJblZlY3Rvclt0MF0KICAgICAgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQdXRCeVZhbEFy
cmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAgICAgICAgIGFkZGkgMSwgdDMsIHQxCkBAIC0xOTcwLDcg
KzE5NzYsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAg
ICAgIGptcCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAKICAgICAub3BQdXRC
eVZhbE91dE9mQm91bmRzOgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZS5tX291dE9mQm91bmRzW3Q1XQorICAgICAgICBsb2FkcCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAgc3Rv
cmViIDEsIEFycmF5UHJvZmlsZTo6bV9vdXRPZkJvdW5kc1t0MV0KICAgICAub3BQdXRCeVZhbFNs
b3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkK
ICAgICAgICAgZGlzcGF0Y2goKQpAQCAtMjY2Miw3ICsyNjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAg
ICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAg
ICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0gICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIpCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgICAg
ICByZXR1cm4odDIpCiAgICAgZW5kCiAKQEAgLTI2NzAsMTQgKzI2NzcsMTQgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAgICBsb2FkcCBPcEdldEZyb21T
Y29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQwCiAgICAgICAgIGxvYWRxIFt0MF0sIHQw
CiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDApCi0gICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDAsIHQzKQogICAgICAgICByZXR1cm4odDAp
CiAgICAgZW5kCiAKICAgICBtYWNybyBnZXRDbG9zdXJlVmFyKCkKICAgICAgICAgbG9hZHAgT3BH
ZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2FkcSBK
U0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXNbdDAsIHQxLCA4XSwgdDAKLSAgICAgICAgdmFs
dWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKKyAgICAgICAgdmFs
dWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCiAgICAgICAg
IHJldHVybih0MCkKICAgICBlbmQKIApAQCAtMzAwMiw3ICszMDA5LDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcAogCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9p
dGVyYXRvciwgdDMpCiAgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuaXRlcmF0b3JPcGVuR2Vu
ZXJpY0dldE5leHRTbG93Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4s
IG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5l
eHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisgICAgcGVyZm9y
bUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9m
aWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3Rv
cmVOZXh0QW5kRGlzcGF0Y2gsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLml0ZXJhdG9yT3Bl
bkdlbmVyaWNHZXROZXh0U2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9p
dGVyYXRvcl9vcGVuX2dldF9uZXh0KQpAQCAtMzA2MSw3ICszMDY4LDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcAogCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92
YWx1ZSwgdDMpCiAgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuZ2V0RG9uZVNsb3cKLSAgICBw
ZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBt
X2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRK
bXBUb0dldFZhbHVlKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBt
X2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0
YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkK
IAogLmdldERvbmVTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJh
dG9yX25leHRfZ2V0X2RvbmUpCkBAIC0zMDg2LDcgKzMwOTMsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wCiAgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRt
cCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4KICAgICBs
b2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hl
Y2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhh
dmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4KLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0
ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1
ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisgICAgcGVyZm9y
bUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRhdGEsIG1fdmFs
dWVQcm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVWYWx1ZUFuZERp
c3BhdGNoLCBtYWNybyhhLCBiLCBjLCBkKSBlbmQpCiAKIC5nZXRWYWx1ZVNsb3c6CiAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCkBAIC0z
MTU5LDcgKzMxNjYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2VudW1lcmF0b3JfZ2V0X2J5
CiAgICAgbG9hZHEgY29uc3RleHByICgob2Zmc2V0SW5CdXR0ZXJmbHkoZmlyc3RPdXRPZkxpbmVP
ZmZzZXQpKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpW3QwLCB0MiwgOF0sIHQyCiAKIC5kb25l
OgotICAgIHZhbHVlUHJvZmlsZShPcEVudW1lcmF0b3JHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwg
dDIpCisgICAgdmFsdWVQcm9maWxlKE9wRW51bWVyYXRvckdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1
LCB0MiwgdDMpCiAgICAgcmV0dXJuKHQyKQogCiAuZ2V0U2xvd1BhdGg6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyODQsMTEgKzEyODQsMTIgQEAgbWFj
cm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTgogICAgIGxvYWRpIExMSW50UmV0
dXJuUENbY2ZyXSwgUEMKIGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5k
SW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKK21hY3JvIGFycmF5UHJvZmlsZShvZmZz
ZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiAg
ICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKICAgICBjb25zdCBpbmRleGluZ1R5
cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFtjZWxsXSwgc2NyYXRjaAotICAgIHN0b3JlaSBzY3JhdGNoLCBvZmZzZXQgKyBBcnJheVByb2Zp
bGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFttZXRhZGF0YV0KKyAgICBsb2FkcCBvZmZzZXRbbWV0
YWRhdGFdLCBzY3JhdGNoMgorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwg
c2NyYXRjaDEKKyAgICBzdG9yZWkgc2NyYXRjaDEsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0
cnVjdHVyZUlEW3NjcmF0Y2gyXQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRN
aXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCkBAIC0xNjEyLDggKzE2MTMsOCBAQCBtYWNy
byBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAgICAgYWRkcCAtcHJvZmlsZUFy
Z1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xl
CiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAwLCBvayBlbmQpCiAgICAgYnRweiB0
MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRW
YWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6
bV9kYXRhW3QxXSwgdDMKLSAgICBidHB6IHQzLCAuYXJndW1lbnRQcm9maWxlRG9uZSAjIFdoZW4g
d2UgY2FuJ3QgSklULCB3ZSBkb24ndCBhbGxvY2F0ZSBhbnkgYXJndW1lbnQgdmFsdWUgcHJvZmls
ZXMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0MV0sIHQzCisgICAgbG9h
ZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fdmFsdWVQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0
b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0M10sIHQzCiAgICAgbXVscCBzaXplb2Yg
VmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9u
IQogICAgIGxzaGlmdHAgMywgdDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3VtZW50cyBv
biB0aGUgc3RhY2suCiAgICAgYWRkcCB0MiwgdDMgIyBwb2ludGVyIHRvIGVuZCBvZiBWYWx1ZVBy
b2ZpbGUgYXJyYXkgaW4gQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcy4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckJ5dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsOCArMzcsNyBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNl
KENvZGVCCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7
ICsraSkgewotICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9s
b2NrKTsKLSAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9m
aWxlRm9yQXJndW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbihsb2NrZXIpOworICAgICAgICBDU3Ry
aW5nIGRlc2NyaXB0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChpKS5i
cmllZkRlc2NyaXB0aW9uKCk7CiAgICAgICAgIGlmICghZGVzY3JpcHRpb24ubGVuZ3RoKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgb3V0LnJlc2V0KCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlX18sIG1fcHJvZmlsZSkKIAogI2RlZmluZSBQ
Uk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBwcm9maWxlTmFtZSkgZG8geyBcCi0gICAgICAgIGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jaykucHJvZmlsZU5hbWUubV9idWNrZXRzWzBdID0gSlNWYWx1
ZTo6ZW5jb2RlKHZhbHVlKTsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
LnByb2ZpbGVOYW1lLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAg
ICAgfSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2b2lkIHRocm93QXJpdHlDaGVja1N0YWNrT3Zl
cmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29w
ZSkKQEAgLTg4Nyw3ICs4ODcsNyBAQCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBp
dGVyYXRvCiAgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0ZXJhYmxlKS5q
c1ZhbHVlKCkuYXNDZWxsKCk7CiAgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9IGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgewogICAgICAgICBpZiAoYXV0
byBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkpIHsKLSAgICAg
ICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChhcnJh
eS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmls
ZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgICAgICAg
ICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5tX2l0
ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsKICAg
ICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmllbGQo
SlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOwpAQCAtOTkzLDcgKzk5Myw3IEBAIEpTQ19E
RUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW4KICAgICBBU1NFUlQoIWJhc2VWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlLT5zdHJ1Y3R1cmVJRCgp
KTsKKyAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2Ut
PnN0cnVjdHVyZUlEKCkpOwogCiAgICAgSlNTdHJpbmcqIG5hbWUgPSBlbnVtZXJhdG9yLT5jb21w
dXRlTmV4dChnbG9iYWxPYmplY3QsIGJhc2UsIGluZGV4LCBtb2RlKTsKICAgICBDSEVDS19FWENF
UFRJT04oKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFU
SChzbG93X3BhdGhfZW4KICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGU6IHsKICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkpKQotICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2
ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAg
ICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChiYXNl
VmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSkpOwog
ICAgIH0KICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9k
ZTogewpAQCAtMTAzNCw3ICsxMDM0LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9lbgogCiAgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNN
b2RlOiB7CiAgICAgICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCi0gICAgICAgICAgICBtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNl
cnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAg
ICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFt
ZSkuanNWYWx1ZSgpKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRl
bnRpZmllcihnbG9iYWxPYmplY3QpOwogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKQEAgLTEw
NjgsNyArMTA2OCw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW4K
ICAgICB9CiAKICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5dGVjb2RlLm1f
cHJvcGVydHlOYW1lKS5qc1ZhbHVlKCkpOwotICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xv
d1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN0cmluZywgJm1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1Bh
dGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN0cmluZywgbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KQo=
</data>
<flag name="commit-queue"
          id="461026"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437787</attachid>
            <date>2021-09-09 14:32:26 -0700</date>
            <delta_ts>2021-09-09 14:40:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>108936</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAyMS0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMgZm9yIG5vbi1jYWxsIG9wY29kZXMgaW50bworICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jay4gVGhpcyB3YXksIHRoZSBkYXRhIGlzIHNoYXJlZCBiZXR3
ZWVuIHRoZSBsaW5rZWQgQ29kZUJsb2NrcworICAgICAgICBvZiB0aGUgc2FtZSBVbmxpbmtlZENv
ZGVCbG9jay4gVGhlIHByb2ZpbGluZyBiZXQgaGVyZSBpcyB0aGF0IHdoZW4gdGhlIHNhbWUgY29k
ZQorICAgICAgICBydW5zIGluIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QsIGl0IGxhcmdlbHkg
cnVucyBpbiB0aGUgc2FtZSB3YXkuIFdlJ3ZlIG1hZGUKKyAgICAgICAgdGhpcyBzYW1lIGJldCBp
biBvdGhlciB3YXlzIHdpdGggb3VyIHByb2ZpbGluZywgYW5kIGl0IGxhcmdlbHkgbWFrZXMgc2Vu
c2UKKyAgICAgICAgdG8gZG8gZm9yIFZhbHVlUHJvZmlsZSBhbmQgQXJyYXlQcm9maWxlIHNpbmNl
IHRoZXkgYm90aCBob2xkIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaW5kZXBlbmRlbnQgZGF0YS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBpdCBzbyB3ZSBubyBsb25n
ZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAgICBwcm9jZXNzaW5nIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxvdyBtdWx0aXBsZSBjb21waWxl
cgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNoIG90aGVyIHdoZW4gdXBkYXRp
bmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAgICAgSXQgbWF5IGVuZCB1cCB3
aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1dCBpdCB3b24ndCBjb3JydXB0
IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIG1lYXN1cmVkIGFzIGEgMSUgc3BlZWR1
cCBvbiBTcGVlZG9tZXRlcjIuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbik6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZWRBcnJheU1vZGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjptYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6Om1heVN0b3JlVG9Ib2xlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjpvdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNo
ZWNrcG9pbnQuaDoKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVycyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2
ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGljdGlv
bnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rp
b25Gb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNo
QXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJyYXlMZW5ndGhNb2RlKToKKyAg
ICAgICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChK
U0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyOjpwcmVkaWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxl
Lmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZW5zdXJlVmFsdWVQcm9maWxlcyk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjplbnN1cmVBcnJheVByb2ZpbGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxl
QmFzZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6
OmNsZWFyQnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmJyaWVmRGVz
Y3JpcHRpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RC
dWNrZXQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2Rl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBj
b25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRv
TWFrZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U6
OnJ1bik6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNv
ZGUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0
QnlWYWxPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OmRpcmVjdFB1dEJ5VmFsT3B0aW1pemUpOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfZnJvbV9zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZvcm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5
dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorCiAyMDIxLTA5
LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYWRkIGZpbGVzIHRvIHhjb2RlcHJvagpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsMTggKzExOCwyMyBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFt
JiBvdXQsIEFyCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkJpZ1VpbnQ2NEFycmF5TW9kZSIp
OwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQg
QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlSUQpCisgICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAg
IFN0cnVjdHVyZUlEIGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOworICAgIGlmICghaWQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9sYXN0U2VlblN0cnVj
dHVyZUlEKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ss
IGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOworICAgIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQordm9pZCBBcnJheVByb2Zp
bGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkKIHsKKyAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxk
IGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuIFRoYXQgd29uJ3QgbGVhZAor
ICAgIC8vIHRvIGFueSBmb3JtIG9mIGNvcnJ1cHRpb24sIGJ1dCBjb3VsZCBjYXVzZSB1cyB0byBn
byBkb3duICFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKKyAgICAvLyBwYXRoIHNpbXVsdGFu
ZW91c2x5LgogICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZXNGcm9tU3RydWN0
dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0
UnVuUHJ1bmluZwpAQCAtMTYzLDEzICsxNjgsMTMgQEAgdm9pZCBBcnJheVByb2ZpbGU6Om9ic2Vy
dmVJbmRleGVkUmVhZChWTQogICAgIH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVm
RGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
Y29kZUJsb2NrKQorQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
Y29kZUJsb2NrKTsKLSAgICByZXR1cm4gYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhs
b2NrZXIpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2spOworICAgIHJl
dHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CiB9CiAKLUNTdHJpbmcgQXJy
YXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhv
dXRVcGRhdGluZygpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJp
bnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDIyICsyMTcsMjIg
QEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOyB9CiAgICAgdm9p
ZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7Ci0gICAgdm9p
ZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgdm9pZCBjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlN
b2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVk
QXJyYXlNb2RlczsgfQotICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzOyB9CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7
IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9Ib2xlKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KLSAgICBib29sIG91dE9m
Qm91bmRzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZC
b3VuZHM7IH0KKyAgICBib29sIG1heVN0b3JlVG9Ib2xlKCkgY29uc3QgeyByZXR1cm4gbV9tYXlT
dG9yZVRvSG9sZTsgfQorICAgIGJvb2wgb3V0T2ZCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX291
dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOyB9CiAKLSAgICBD
U3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJs
b2NrKik7Ci0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihDb2Rl
QmxvY2sqKTsKKyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsK
ICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIG9wIDpnZXRf
YXJndW1lbnQsCiAgICAgICAgIGluZGV4OiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmFyZ3VtZW50X2NvdW50LApAQCAtMTgzLDcgKzE4Myw3IEBA
IG9wIDp0b190aGlzLAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhY2hlZFN0cnVjdHVyZUlE
OiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMsCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6Y2hlY2tfdGR6LApAQCAtMzA5LDcgKzMwOSw3IEBAIG9wX2dyb3Vw
IDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcCA6Yml0bm90LApAQCAt
MzE4LDcgKzMxOCw3IEBAIG9wIDpiaXRub3QsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZQorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3BfZ3JvdXAg
OlVuYXJ5T3AsCkBAIC0zNjMsNyArMzYzLDcgQEAgb3AgOnRvX29iamVjdCwKICAgICAgICAgbWVz
c2FnZTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0K
IAogb3BfZ3JvdXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLApAQCAtMzc2LDcgKzM3Niw3IEBAIG9w
X2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5hcnlPcCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpu
ZWdhdGUsCkBAIC00NDUsNyArNDQ1LDcgQEAgb3AgOmluX2J5X3ZhbCwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmluX2J5X2lkLApAQCAtNDc3LDcgKzQ3Nyw4IEBAIG9wIDpn
ZXRfYnlfaWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OCw3
ICs0ODksNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpn
ZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTQ5OSw3ICs1MDAsNyBAQCBvcCA6Z2V0X2J5X3ZhbF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBA
IC01MDksNyArNTEwLDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgfQpAQCAtNTIwLDcgKzUyMSw3
IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0cnlfZ2V0
X2J5X2lkLApAQCAtNTMwLDcgKzUzMSw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAg
IH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3MSw4ICs1NzIsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6
IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAgLTU4Myw3ICs1ODQsNyBAQCBvcCA6Z2V0X3By
aXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLApAQCAtNjMyLDcgKzYzMyw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Miw3ICs2
NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAog
b3AgOmRlbF9ieV92YWwsCkBAIC04NDIsNyArODQzLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOnRhaWxfY2FsbCwKQEAgLTg1NCw3ICs4NTUsNyBAQCBvcCA6
dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBA
IC04NjcsNyArODY4LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAg
fQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgwLDggKzg4MSw4IEBAIG9wIDpjYWxsX3ZhcmFy
Z3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
YXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZCwKQEAgLTkwMSw4ICs5MDIsOCBAQCBvcCA6
dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRt
cHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIyLDgg
KzkyMyw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3QsCkBAIC05MzUsNyArOTM2LDcgQEAgb3Ag
OmNvbnN0cnVjdCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y29uc3RydWN0X3Zh
cmFyZ3MsCkBAIC05NDgsOCArOTQ5LDggQEAgb3AgOmNvbnN0cnVjdF92YXJhcmdzLAogICAgICAg
ICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5j
bHVkaW5nVGhpczogdW5zaWduZWQKQEAgLTEwMjgsNyArMTAyOSw3IEBAIG9wIDpnZXRfZnJvbV9z
Y29wZSwKICAgICAgICAgICAgIHN0cnVjdHVyZTogV3JpdGVCYXJyaWVyQmFzZVtTdHJ1Y3R1cmVd
LAogICAgICAgICB9LAogICAgICAgICBvcGVyYW5kOiB1aW50cHRyX3QsICNvZmZzZXQgNgotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsICMgb2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosICMgb2Zmc2V0IDcKICAgICB9LAogICAgIG1ldGFkYXRhX2luaXRpYWxp
emVyczogewogICAgICAgICBnZXRQdXRJbmZvOiA6Z2V0UHV0SW5mbywKQEAgLTEwNjUsNyArMTA2
Niw3IEBAIG9wIDpnZXRfZnJvbV9hcmd1bWVudHMsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1
bWVudHMsCkBAIC0xMTczLDcgKzExNzQsNyBAQCBvcCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAg
ICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9y
TWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg3LDggKzExODgsOCBAQCBvcCA6ZW51bWVyYXRvcl9n
ZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAg
IGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjAyLDcg
KzEyMDMsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9ieV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAg
ICB9CiAKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG9wIDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6
IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyNDksMTEgKzEyNTAsMTEgQEAgb3Ag
Oml0ZXJhdG9yX29wZW4sCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBpdGVyYXRp
b25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAgICBpdGVyYWJsZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgaXRl
cmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
LSAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbmV4dFByb2ZpbGU6
IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3lt
Ym9sQ2FsbDogbmlsLApAQCAtMTI3MiwxMyArMTI3MywxMyBAQCBvcCA6aXRlcmF0b3JfbmV4dCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxl
LAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBjYWxs
TGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
Ci0gICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBuZXh0UmVz
dWx0OiBKU1ZhbHVlLApAQCAtMTMyMiw3ICsxMzIzLDcgQEAgb3AgOmdldF9pbnRlcm5hbF9maWVs
ZCwKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDpwdXRfaW50ZXJuYWxfZmllbGQsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5k
c0ZvckNoZWNrcG9pbnQuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDIwICs1NywyMCBAQCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwo
Qnl0ZWNvCiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3Rl
eHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRv
ck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7Ci0g
ICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9u
ZXh0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0
dXJuIG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JP
cGVuOjpnZXROZXh0OiByZXR1cm4gbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBl
bHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0
b3JfbmV4dCkgewogICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBj
YXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRS
ZXN1bHRQcm9maWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1
cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBjYXNl
IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3Vs
dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBt
ZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZTogcmV0dXJuIG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAg
ICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRh
Lm1fcHJvZmlsZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYgKzM3NCwxMCBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhWTSYgdm0sIFN0cnVjdHVyZSogCiBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKKyAgICAvLyBX
ZSBjYW4ndCBmaW5hbGl6ZSBhIEdDIHdoaWxlIGluIGhlcmUgc2luY2Ugd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8KKyAgICAvLyBtYWtlIHN1cmUgb3VyIFZhbHVlUHJvZmlsZXMgYWxsIHBvaW50IHRv
IHByb3BlciBsb2NhdGlvbnMuCisgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5pc0RlZmVycmVk
KCkpOyAKKwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBmaW5pc2hDcmVhdGlv
bkNvbW1vbih2bSk7CiAKQEAgLTQzNSw3ICs0MzksOCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5j
ZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICBhdXRvIGxpbmtf
cHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29k
ZSovLCBhdXRvJiAvKm1ldGFkYXRhKi8pIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsmXShj
b25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiBtZXRh
ZGF0YSkgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFZhbHVlUHJvZmls
ZSosIGRlY2x0eXBlKG1ldGFkYXRhLm1fcHJvZmlsZSk+KTsKICAgICAgICAgbV9udW1iZXJPZk5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgIH07CiAKQEAgLTQ5OSw5ICs1MDQsOSBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAKICAgICAgICAgTElOSyhP
cEdldEJ5SWQsIHByb2ZpbGUpCiAKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0LCBwcm9m
aWxlKQotICAgICAgICBMSU5LKE9wRW51bWVyYXRvckluQnlWYWwsIHByb2ZpbGUpCi0gICAgICAg
IExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIHByb2ZpbGUpCisgICAgICAgIExJTkso
T3BFbnVtZXJhdG9yTmV4dCkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JJbkJ5VmFsKQorICAg
ICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093blByb3BlcnR5KQogICAgICAgICBMSU5LKE9wRW51
bWVyYXRvckdldEJ5VmFsLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxl
KQpAQCAtNzYxLDYgKzc2Niw5NiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksKIAorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7CisgICAgICAg
IGlmIChtX21ldGFkYXRhKSB7CisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgICAgIHNp
emUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOworICAgICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAg
ICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVuPigpICog
MzsKKyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
TmV4dD4oKSAqIDM7CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplKTsK
KworICAgICAgICBhdXRvJiB2YWx1ZVByb2ZpbGVzID0gdW5saW5rZWRDb2RlQmxvY2stPmVuc3Vy
ZVZhbHVlUHJvZmlsZXMoc2l6ZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkKKyAgICAgICAgICAgIHZhbHVl
UHJvZmlsZXNbaV0uY2xlYXJCdWNrZXRzKCk7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUgZmlyc3QgbnVtYmVyT2ZBcmd1
bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMK
KworICAgICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBhc3NpZ24gPSBb
Jl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlID0g
JnZhbHVlUHJvZmlsZXNbaW5kZXgrK107CisKKyAgICAgICAgICAgICAgICAvLyBUaGVzZSBWYWx1
ZVByb2ZpbGVzIGNvdWxkIGJlIHN0YWxlLCBzaW5jZSBVbmxpbmtlZENvZGVCbG9jayBkb2Vzbid0
IHZpc2l0CisgICAgICAgICAgICAgICAgLy8gdGhlbSBpbiBhbnkgd2F5LiBTbyB0aGV5IGNvdWxk
IGJlIGx5aW5nIGFyb3VuZCBmcm9tIHdoZW4gc29tZSBwcmlvciBDb2RlQmxvY2sKKyAgICAgICAg
ICAgICAgICAvLyB3YXMgZXhlY3V0aW5nLCBidXQgZGllZCBhZnRlciBzdG9yaW5nIHRvIHRoZW0u
IFNvIHRvIGJlIGNvbnNlcnZhdGl2ZSwgd2UgY2xlYXIKKyAgICAgICAgICAgICAgICAvLyBhbnkg
dW5wcm9jZXNzZWQgdmFsdWVzIG5vdy4KKyAgICAgICAgICAgICAgICBwcm9maWxlLT5jbGVhckJ1
Y2tldHMoKTsKKyAgICAgICAgICAgIH07CisKKyNkZWZpbmUgVklTSVQoX19vcCkgXAorICAgICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFz
c2lnbihtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyAKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwor
ICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAg
ICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fZG9u
ZVByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX3ZhbHVlUHJvZmls
ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZGV4ID09IHNpemUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9
IDA7CisKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAor
ICAgICAgICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7CisgICAg
ICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENPVU5UKQorI3VuZGVm
IENPVU5UCisgICAgICAgICAgICBzaXplICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8T3BJdGVy
YXRvck5leHQ+KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAg
ICAgYXV0byYgYXJyYXlQcm9maWxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5lbnN1cmVBcnJheVBy
b2ZpbGVzKHNpemUpOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworCisgICAgICAg
ICAgICBhdXRvIGFzc2lnbiA9IFsmXSAoQXJyYXlQcm9maWxlKiYgcHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgIHByb2ZpbGUgPSAmYXJyYXlQcm9maWxlc1tpbmRleCsrXTsKKworICAgICAgICAg
ICAgICAgIC8vIFNlZSBjb21tZW50IGFib3ZlIGFib3V0IHdoeSB3ZSBjbGVhciBvdXQgc3RhbGUg
dmFsdWVzIGluIHZhbHVlIHByb2ZpbGVzLgorICAgICAgICAgICAgICAgIC8vIFdlIGRvIHRoZSBh
bmFsb2dvdXMgdGhpbmcgaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAg
IHByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGUgb3Bjb2Rl
cyBpbiBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFLgorICAgICAgICAgICAgLy8g
V2UgZG9uJ3QgeWV0IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGluZ3Mgd2l0aCBMTEludCBD
YWxsTGlua0luZm9zLgorI2RlZmluZSBWSVNJVChfX29wKSBcCisgICAgICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUKQorI3VuZGVmIFZJU0lUCisKKyAgICAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAg
ICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHNpemUpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhD
b250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAtOTI4LDggKzEwMjMsNiBAQCB2
b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJuYXRpdmUoVk0mIHZtLCBDCiB2b2lkIENvZGVCbG9jazo6
c2V0TnVtUGFyYW1ldGVycyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRl
cnMgPSBuZXdWYWx1ZTsKLQotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0
b3I8VmFsdWVQcm9maWxlPihPcHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAK
IENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0y
NzczLDcgKzI4NjYsNyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxl
CiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI2RlZmluZSBDQVNFMShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOworICAgICAgICByZXR1
cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOwog
CiAjZGVmaW5lIENBU0UyKE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKQEAgLTI3ODUs
MTMgKzI4NzgsNiBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlCiAj
dW5kZWYgQ0FTRTEKICN1bmRlZiBDQVNFMgogCi0gICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29kZUlE
OiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigp
OwotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAg
ICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJy
YXlMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yOTAwLDE5ICsyOTg2LDE5IEBAIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICAgICAgICAgIG51bVNh
bXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBw
cm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0Lgog
ICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7CiAgICAgICAg
IGlmIChpc0FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocHJv
ZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAg
ICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7Ci0gICAgICAg
IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfSk7CiAKICAgICBpZiAobV9tZXRh
ZGF0YSkgewogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsmXShhdXRvJiBt
ZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fYnVmZmVyKSB7CiAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2goWyZdKFZhbHVlUHJvZmlsZUFuZFZp
cnR1YWxSZWdpc3RlciYgcHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKQEAgLTI5MzEsMTAgKzMwMTcsOCBAQCB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxBcnJheVByZWRpY3Rpb25zKCkKIHsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7Ci0gICAgCiAgICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQcm9maWxlJiBw
cm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
ciwgdGhpcyk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMp
OwogICAgIH0pOwogICAgIAogICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShB
cnJheUFsbG9jYXRpb25Qcm9maWxlJiBwcm9maWxlKSB7CkBAIC0zMTY0LDcgKzMyNDgsNyBAQCBW
YWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9mCiAKICNkZWZpbmUgQ0FTRShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIGlu
c3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX3Byb2ZpbGU7CiAKICAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDQVNFKQogCkBAIC0zMTgxLDEwICsz
MjY1LDEwIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2YKICAgICB9
CiB9CiAKLVNwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZv
ckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCkKK1NwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9m
aWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KQogewogICAgIGlmIChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSA9IHRyeUdldFZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiB2YWx1
ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICByZXR1
cm4gdmFsdWVQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICByZXR1cm4g
U3BlY05vbmU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDE5ICs0NzQsMTYgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzLnNpemUoKSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9udW1QYXJhbWV0ZXJzKSB8fCAhT3B0aW9uczo6dXNlSklUKCkp
OwotICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpOworICAgICAg
ICByZXR1cm4gbnVtUGFyYW1ldGVycygpOwogICAgIH0KIAogICAgIFZhbHVlUHJvZmlsZSYgdmFs
dWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7IC8vIFRoaXMgaXMgb25seSBjYWxsZWQgZnJv
bSB0aGUgdmFyaW91cyBKSVQgY29tcGlsZXJzIG9yIHBsYWNlcyB0aGF0IGZpcnN0IGNoZWNrIG51
bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzIGJlZm9yZSBjYWxsaW5nIHRoaXMuCi0gICAgICAg
IFZhbHVlUHJvZmlsZSYgcmVzdWx0ID0gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXNbYXJndW1lbnRJ
bmRleF07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB1bmxpbmtlZENv
ZGVCbG9jaygpLT52YWx1ZVByb2ZpbGUoYXJndW1lbnRJbmRleCk7CiAgICAgfQogCiAgICAgVmFs
dWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwot
ICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZXgpOworICAgIFNwZWN1bGF0
ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoVmFsdWVQ
cm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwpAQCAtMTAxNSw3ICsxMDEy
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxvY2tzLgogICAgIENvbXByZXNz
ZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxl
czsKICNlbmRpZgotICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVl
UHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJf
bXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjIgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29ucwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNk
ZWZpbmUgVklTSVQoX19vcCkgXAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7
CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyBmdW5jKCptZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKIAogI3VuZGVmIFZJU0lUCiAKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeyAKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZh
bHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNl
KTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmls
ZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOwogICAgICAgICB9KTsK
ICAgICB9ICAgCiAKQEAgLTY0LDEzICs2NCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5j
KQogewogICAgIGlmIChtX21ldGFkYXRhKSB7Ci0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAobWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAg
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KICNkZWZpbmUgVklTSVQxKF9fb3ApIFwKLSAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyht
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19v
cD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7
IH0pOwogCiAjZGVmaW5lIFZJU0lUMihfX29wKSBcCiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxf
X29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8u
bV9hcnJheVByb2ZpbGUpOyB9KTsKQEAgLTgyLDcgKzc3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZv
ckVhY2hBcnJheVByb2ZpbGUoY29ucwogI3VuZGVmIFZJU0lUMgogCiAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAgICAgZnVu
YygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwogICAgICAgICB9KTsKICAgICB9CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0
YS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZE1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCw2IEBAIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdl
dEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIpOwogCi1zdHJ1Y3QgR2V0QnlJZE1vZGVNZXRh
ZGF0YUFycmF5TGVuZ3RoIHsKLSAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotfTsKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIp
OwotCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCB7CiAgICAgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwpAQCAtOTAs
NyArODUsNiBAQCB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB9OwogICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRh
dGFVbnNldCB1bnNldE1vZGU7Ci0gICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9h
ZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YSkgPT0g
MTYpOwpAQCAtMTEzLDcgKzEwNyw2IEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAg
ICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2Rl
OwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5zZXRNb2RlOwotICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5ndGhNb2RlOwogICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiAgICAgfTsKICAgICBH
ZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTM3LDcgKzEzMCw2IEBAIGlubGluZSB2b2lkIEdldEJ5SWRN
b2RlTWV0YWRhdGE6OnNldFVuc2UKIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNl
dEFycmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aDsKLSAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGU7
CiAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcu
CiAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyAr
MzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigpIHsgfQog
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3NlZExhenlP
cGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQordm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKQotICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogfQogCiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
OjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIExhenlP
cGVyYW5kVmFsdQogfQogCiBTcGVjdWxhdGVkVHlwZSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBh
cnNlcjo6cHJlZGljdGlvbigKLSAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKKyAgICBjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5
KSBjb25zdAogewogICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0SWZQ
cmVzZW50KGtleSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm4gU3BlY05vbmU7
CiAgICAgCi0gICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOworICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDYgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBu
dW1FbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGF1dG8qIHN0YXJ0ID0gYml0d2lzZV9jYXN0PHR5
cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldChPcDo6b3Bjb2RlSUQpKTsKKyAgICAgICAgYXV0byog
ZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldEltcGwoT3A6Om9w
Y29kZUlEICsgMSkpOworICAgICAgICByZXR1cm4gZW5kIC0gc3RhcnQ7CisgICAgfQorCiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKICAgICB2b2lkIHJlZigpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2
ICsxMzksNyBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4CiAgICAg
bWFjcm8oT3BFbnVtZXJhdG9yR2V0QnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JJbkJ5
VmFsKSBcCiAgICAgbWFjcm8oT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNy
byhPcEdldEJ5SWQpIFwKIAogI2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9BTExP
Q0FUSU9OX1BST0ZJTEUobWFjcm8pIFwKICAgICBtYWNybyhPcE5ld0FycmF5KSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxOSw2ICs0MTksOCBAQCBwcml2
YXRlOgogICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgRml4
ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAg
IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb247CisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX3ZhbHVl
UHJvZmlsZXM7IC8vIFRoZSBmaXJzdCBudW1QYXJhbWV0ZXJzKCkgYXJlIGFyZ3VtZW50IHByb2Zp
bGVzLgorICAgIEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4gbV9hcnJheVByb2ZpbGVzOwogICAg
IHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+OwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZl
Y3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVu
Y3Rpb25FeHByczsKQEAgLTQ1Niw2ICs0NTgsMjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
b3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCisgICAg
VmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3ZhbHVlUHJvZmlsZXNbaV07CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8VmFsdWVQ
cm9maWxlPiYgZW5zdXJlVmFsdWVQcm9maWxlcyh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlmICghbV92YWx1ZVByb2ZpbGVzLnNp
emUoKSkKKyAgICAgICAgICAgIG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJv
ZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWVQcm9maWxlcy5zaXpl
KCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgfQorCisg
ICAgRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPiYgZW5zdXJlQXJyYXlQcm9maWxlcyh1bnNpZ25l
ZCBzaXplKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlm
ICghbV9hcnJheVByb2ZpbGVzLnNpemUoKSkKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9
IEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fYXJyYXlQcm9maWxlcy5zaXplKCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX2FycmF5
UHJvZmlsZXM7CisgICAgfQorCiBwcml2YXRlOgogICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJn
ZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDExIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVC
YXNlIHsKICAgICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAgICB7CisgICAgICAgIGNsZWFy
QnVja2V0cygpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCdWNrZXRzKCkKKyAgICB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKQog
ICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAg
ICAgfQpAQCAtOTIsOSArOTcsOSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9u
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQorICAgIENTdHJpbmcgYnJpZWZEZXNj
cmlwdGlvbigpCiAgICAgewotICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICAgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgICAgIG91dC5wcmludCgicHJlZGljdGluZyAi
LCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CkBAIC0xMTgsMTAgKzEyMywxMCBAQCBz
dHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8g
VXBkYXRlcyB0aGUgcHJlZGljdGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4gTmV2ZXIgY2Fs
bCB0aGlzIGZyb20gYW55IHRocmVhZAotICAgIC8vIHRoYXQgaXNuJ3QgZXhlY3V0aW5nIHRoZSBj
b2RlLgotICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImKQorICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpCiAgICAgeworICAgICAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNh
bGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIC8vIFRoZSBpbXBvcnQg
cGFydCBpcyB0aGF0IHdlIGRvbid0IGVuZCB1cCBjb3JydXB0aW5nIGFueSB2YWx1ZXMuCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7
CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tp
XSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQpAQCAtMTU2LDYgKzE2MSw3IEBAIHN0cnVjdCBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6
IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1
ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoVmFsdWVQcm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLUFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKK0FycmF5TW9kZSBBcnJheU1vZGU6OmZyb21P
YnNlcnZlZChBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29s
IG1ha2VTYWZlKQogewogICAgIEFycmF5OjpDbGFzcyBub25BcnJheTsKLSAgICBpZiAocHJvZmls
ZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikpCisgICAgaWYgKHByb2ZpbGUt
PnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpKQogICAgICAgICBub25BcnJheSA9IEFycmF5
OjpPcmlnaW5hbE5vbkFycmF5OwogICAgIGVsc2UKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6
Tm9uQXJyYXk7CkBAIC02MywyNyArNjMsMjcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9i
c2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb252ZXJ0cyA9IEFycmF5
OjpBc0lzOwogCi0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVy
dHMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAg
ICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0
aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH07CiAKLSAgICBBcnJheU1vZGVzIG9i
c2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CisgICAgQXJyYXlN
b2RlcyBvYnNlcnZlZCA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwogICAgIHN3aXRj
aCAob2JzZXJ2ZWQpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlVucHJvZmlsZWQpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhOb25BcnJheSk6Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9m
aWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKKyAgICAgICAgaWYgKGFj
dGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdB
cmd1bWVudHMsIG5vbkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBh
Y3Rpb24pOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRp
Y3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2Nr
ZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbikud2l0aFNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFVuZGVjaWRlZCk6CiAgICAgICAgIGlmIChhY3Rp
b24gPT0gQXJyYXk6OldyaXRlKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdBcmd1bWVudHMsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBB
cnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFycmF5LCBBcnJheTo6
T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1h
a2VTYWZlKTsKICAgICAgICAgCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJy
YXlzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRo
VW5kZWNpZGVkKToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2Zp
bGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0
aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0Fy
Z3VtZW50cywgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6
OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVj
dFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEludDMyKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9y
aW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoSW50MzIpOgpAQCAtMTEzLDUwICsxMTMsNTAgQEAgQXJy
YXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICByZXR1cm4gaGFu
ZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpDb250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAgICBj
YXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwg
bm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFy
cmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFn
ZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIs
IHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJy
YXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6
QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlT
dG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHBy
b2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJh
eXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1
dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBl
ZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpQ
b3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24p
LndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDhBcnJheU1vZGU6
Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQ4QXJyYXksIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAg
Y2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tl
ciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJ
bnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJv
ZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6SW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4QXJy
YXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2Ug
VWludDE2QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9hdDMy
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXks
IG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQzMkFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwg
bWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkZsb2F0NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0ludDY0
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdVaW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgZGVm
YXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkgdHlw
ZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9uLXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1ha2Ug
c2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhlIG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29udmVy
dCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlmIChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJBWV9N
T0RFUykKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
bG9ja2VyKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5n
UHJlZGljdGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICBpZiAoKG9ic2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheSkpICYmIHByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQ
cmVkaWN0aW9ucykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgICAgICAKICAgICAgICAgQXJyYXk6OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3M7CkBAIC0xODMsNyArMTgzLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6
ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcnJheUNsYXNz
ID0gQXJyYXk6OlBvc3NpYmx5QXJyYXk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh3b3JkKTsKICAgICB9CiAgICAgCi0g
ICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CisgICAgc3Rh
dGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7CiAgICAgCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJh
eTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewpAQCAtMTkwLDEzICsxOTAs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cywgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAot
ICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBj
b25zdAorICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShBcnJheVByb2Zp
bGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6
U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsKIAogICAgICAgICBpZiAobWFrZVNhZmUpCiAgICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgICAgICBlbHNl
IGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIpKQorICAgICAgICBlbHNlIGlmIChw
cm9maWxlLT5tYXlTdG9yZVRvSG9sZSgpKQogICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFy
cmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBB
cnJheTo6SW5Cb3VuZHM7CkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CiAgICAgfQogICAgIAotICAgIEFy
cmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJy
YXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3
aXRoUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAg
ICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNzOwogCiAgICAgICAgIGlmIChp
c0pTQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewotICAg
ICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJy
YXlNb2Rlcyhsb2NrZXIpOworICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcygpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgeworICAgICAg
ICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlN
b2RlcygpOwogICAgICAgICAgICAgICAgIGlmIChoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJh
eU1vZGVzKSAmJiAhaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCiAgICAgICAgICAg
ICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbENvcHlPbldyaXRlQXJyYXk7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5
TW9kZXMpICYmIGhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9kZXMpKQpAQCAtMjIyLDcgKzIy
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3Mg
PSBhcnJheUNsYXNzKCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3Mo
bXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUs
IG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH0KICAg
ICAKICAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uRnJvbUZvckNvZGVC
bG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewotICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbjsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBw
cmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJ
bmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBjb2RlQmxvY2stPnZhbHVl
UHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCgpKTsKICAgICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0gbV92bS0+ZnV6emVyQWdlbnQo
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2VudCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05ODMsMTAgKzk3OSw5IEBAIHBy
aXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYgcHJvZmls
ZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOwotICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmls
ZS5vdXRPZkJvdW5kcyhsb2NrZXIpOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2Jz
ZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jayk7CisgICAgICAgIGJvb2wgbWFrZVNhZmUgPSBwcm9maWxlLm91dE9mQm91bmRzKCk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZCgmcHJvZmlsZSwgYWN0aW9uLCBt
YWtlU2FmZSk7CiAgICAgfQogCiAgICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIw
NTgsOSArMjA1Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmkK
ICAgICAgICAgICAgIC8vIGFyZ3VtZW50cyByZWNlaXZlZCBpbnNpZGUgdGhlIGNhbGxlZS4gQnV0
IHRoYXQgcHJvYmFibHkgd29uJ3QgbWF0dGVyIGZvciBtb3N0CiAgICAgICAgICAgICAvLyBjYWxs
cy4KICAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSB7Ci0gICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAg
ICAgICAgVmFsdWVQcm9maWxlJiBwcm9maWxlID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JB
cmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAg
dmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50
ID0gYWRkVG9HcmFwaChudW1TZXRBcmd1bWVudHMgPj0gbWFuZGF0b3J5TWluaW11bSA/IFNldEFy
Z3VtZW50TWF5YmUgOiBTZXRBcmd1bWVudERlZmluaXRlbHksIE9wSW5mbyh2YXJpYWJsZSkpOwpA
QCAtNjMwNSw3ICs2Mjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgaWYgKHNob3VsZENvbXBpbGVBc0dldEJ5SWQpCiAgICAgICAgICAg
ICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRl
bnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldEJ5
SWQsIG5leHRPcGNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAg
IEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2Ug
aXQgb25seSB1c2VzIHRocmVlIGNoaWxkCiAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCiAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NDE5MgpAQCAtNzA3NSwxMSArNzA2OSw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1
bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBz
ZWVuQXJndW1lbnRzOwogCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9j
ayk7Ci0KICAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVB
bmRWaXJ0dWFsUmVnaXN0ZXImIHByb2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Y2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKQEAgLTc0MzEsNyArNzQyMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFs
bG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBk
b0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKIAotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJs
ZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJl
YWQpOwogICAgICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRo
b3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWUpKTsKIAogICAgICAgICAgICAgICAgIHsKQEAgLTgzMjYsNyArODMx
OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7Ci0gICAgICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAg
ICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2Rl
LmFzV29yZCgpKSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2luX2J5X3ZhbCk7CkBAIC04NDEwLDcgKzg0MDIsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVy
YXRvcl9uZXh0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVudW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJl
YWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0
KGJ5dGVjb2RlLm1faW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChi
eXRlY29kZS5tX2VudW1lcmF0b3IpOwpAQCAtODQ0Miw3ICs4NDM0LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1v
ZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJh
eTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsK
IAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODUw
Niw3ICs4NDk4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfaW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigp
OwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2Rl
IGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5
OjpSZWFkKTsKIAogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFz
ZSkpOwogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlO
YW1lKSk7CkBAIC04NTIxLDcgKzg1MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpS
ZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODg4MSw3ICs4ODczLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZQogICAgIH0KIAogICAgIGlm
ICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKLSAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBB
cnJheTo6V3JpdGUpOworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3Jp
dGUpOwogCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOwogICAgICAgICBhZGRWYXJBcmdD
aGlsZChwcm9wZXJ0eSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNDIsOSArNDA0Miw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIEFycmF5
OjpSZWFkKTsKICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkgewotICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJs
b2NrKTsKLSAgICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxv
Y2tlciwgYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOworICAgICAgICAgICAgYXJy
YXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24ocHJvZmlsZWRCbG9jayk7CisgICAg
ICAgICAgICBhcnJheU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChhcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9
PSBBcnJheTo6VW5wcm9maWxlZCkgewogICAgICAgICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJy
YXkgb3BlcmF0aW9ucywgaXQgbWFrZXMgc2Vuc2UgdG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAg
ICAgICAgICAgIC8vIGFjY2Vzc2VzIGFzIEZvcmNlRXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRo
ZXIgdGhhbiB1c2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgyMTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAK
ICAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkgPj0gMSk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9j
aygpLT5tX2xvY2spOwotICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRo
aXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZy
b20KICAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBv
cHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgogICAgICAgICAgICAgYXV0byYgYXJndW1l
bnRzID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52
YWx1ZTsKIAogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAg
ICAgICAgICAgICBWYWx1ZVByb2ZpbGUmIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7Ci0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10t
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAotICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKKyAgICAgICAgICAgICAgICBh
cmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw3ICsz
MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4uLik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0
YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2b2lkPgorICAgICAgICBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJv
ZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4KICAgICAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpOwogCiAgICAgICAgIHZvaWQg
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbEdQUiwgQXJyYXlQ
cm9maWxlKiwgUmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBA
IGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci1pbmxpbmUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4g
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkK
K2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRh
dGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFs
dWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkKIHsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjgsMTAgKzEw
MjgsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsT3B0aW1pCiAgICAgICAg
IGlmICghaXNDb3B5T25Xcml0ZShiYXNlT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2Ny
aXB0LmlzSW50MzIoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9j
aywgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywgUHV0
S2luZDo6Tm90RGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTEwOTgsMTAgKzEwOTYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5
VmFsCiAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAm
JiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
IGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHByb2ZpbGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI0MTIsMTAgKzI0MDgsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0QnlWCiAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJz
Y3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAg
ICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgcmVwYXRjaEFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdU
MywgcmVnVDIpOwogCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV92YWwoY29uc3QgSQogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwogICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsK
QEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RyCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdU
MSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCBy
ZWdUNSwgcmVnVDQpOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAg
ICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmls
ZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC03OTcsNyAr
Nzk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCBy
ZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2UsIHJlZ1QxKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZh
bEluZGV4KytdOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRl
Y29kZS5tX3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdAogICAgIGlmICho
YXNBbnlTbG93Q2FzZXMoaXRlcikpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZTsKIAogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBA
IC00MzksNyArNDM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cgogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdU
MSk7CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwo
Y29uc3QgSQogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAgICAgICAgIGVjbWFN
b2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIHByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisgICAgICAgIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMTEwOCwxMSArMTEwOCw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICAKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKICAgICAKLSAgICBpZiAoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFs
LCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwot
ICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMSk7Ci0gICAg
ICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMpOwotICAgIH0KKyAgICBpZiAoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUsIHJlZ1QxKTsKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMCk7CiAKQEAgLTE1MTEsNyArMTUwOCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTE1MzgsNyArMTUzNSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW4KICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
aW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CiAKQEAgLTIzOTMsNyArMjM5MCw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICB9CiAKICAgICBzdGF0aWNf
YXNzZXJ0KFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzID09IDEpOwotICAgIHN0b3JlNjQo
cmVnVDAsIEFkZHJlc3MobWV0YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9w
cm9maWxlKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhtZXRhZGF0YUdQUiwgT0JKRUNUX09GRlNF
VE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSwgcmVnVDEpOworICAgIHN0b3JlNjQocmVnVDAsIEFk
ZHJlc3MocmVnVDEsIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAKICAg
ICByZXQoKTsKIApAQCAtMjQ0OSw3ICsyNDQ3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSQogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9u
UHRyVGFnKTsKICAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVF
eGNlcHRpb25DaGVjayh2bSk7CiAKLSAgICBqaXQuc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2Zp
bGUpKSk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
ciwgT0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSwgR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpOworICAgIGppdC5zdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwog
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3Rlcik7CiAKICNpZiBDUFUoWDg2XzY0KQpAQCAtMjg1NCw3ICsyODUzLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKAogICAgIFZpcnR1YWxS
ZWdpc3RlciBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXg7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHBy
b3BlcnR5TmFtZSA9IGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOwotICAgIEFycmF5UHJvZmlsZSog
cHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHBy
b2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNl
czsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgaW5s
aW5lIEpTVmFsdWUgZ2V0T3BlcmFuZChDYWxsRnJhbWUqIGNhbAogICAgIH0gd2hpbGUgKGZhbHNl
KQogCiAjZGVmaW5lIExMSU5UX1BST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
aykubV9wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAg
ICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChjYWxsRnJh
bWUsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIFwKQEAgLTc2MSw3ICs3NjEsNyBAQCBzdGF0
aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKCiAgICAgdm0uaGVhcC53cml0ZUJh
cnJpZXIoY29kZUJsb2NrKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJ
RChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RhdGljIEpTVmFsdWUgcGVy
Zm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJs
b2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04
MjQsOCArODI0LDkgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdAog
ICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFz
ZVZhbHVlKSAmJiBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAg
ewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9j
ayk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJheVByb2ZpbGUpOwogICAgICAgICAg
ICAgbWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2
ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9
CiAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQpAQCAtODQx
LDcgKzg0Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxM
SW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQs
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7CiAgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTg1NywxMCArODU4LDEwIEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl8KICAgICBpZiAoIWl0ZXJh
dG9yLmlzT2JqZWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50
R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgbnVsbHB0cik7CiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fbmV4dFByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgIExMSU5UX0VORCgpOwogfQogCkBAIC04NzcsMTAgKzg3OCwxMCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09i
amVjdCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFk
YXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZt
LnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgbnVsbHB0
cik7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgZG9uZVJlZ2lzdGVyID0gcmVz
dWx0OwotICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1
Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQogCkBAIC04OTQsMTAgKzg5NSwxMCBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgUmVnaXN0ZXImIHZh
bHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CiAg
ICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IHZhbHVlUmVnaXN0ZXIuanNWYWx1ZSgpOwogCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRh
ZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1M
TEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwg
dm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEsIG51
bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIHZhbHVlUmVnaXN0ZXIg
PSByZXN1bHQ7Ci0gICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmls
ZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spLm1fdmFsdWVQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAtMTAyNCw3ICsxMDI1
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTQogICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMklu
ZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJy
YXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAg
ICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoYXNTdHJp
bmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpIHsKQEAgLTE0MjksNyArMTQzMCw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwKICAgICBMTElOVF9CRUdJTigp
OwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFsPigpOwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3Byb3BlcnR5KSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKSwgZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkp
KTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVj
dCwgZwogICAgICAgICBtb3ZlIHBheWxvYWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQy
KQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwg
dDApCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQx
LCB0MCwgdDIpCiAgICAgICAgIGdldChtX2RzdCwgdDIpCiAgICAgICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQpAQCAtODUsNyArODUsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBv
cGNvZGVTdHJ1CiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9y
ZWkgcjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCByMSwgcjAsIHQzKQogICAgIGRpc3BhdGNoKCkKIAogZW5kCkBA
IC02NzcsOSArNjc3LDEwIEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmly
b24KICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQotICAgIHN0b3JlaSB0YWcsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBUYWdPZmZz
ZXRbbWV0YWRhdGFdCi0gICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQorbWFj
cm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB0YWcs
IHBheWxvYWQsIHNjcmF0Y2gpCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
cHJvZmlsZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJv
ZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3NjcmF0Y2hdCisgICAgc3RvcmVpIHBheWxvYWQs
IFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtzY3JhdGNoXQogZW5kCiAK
IApAQCAtMTQzNyw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRf
ZGlyZWN0LAogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1
XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJ
ZERpcmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAs
IHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0
MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpA
QCAtMTQ1OCwzNyArMTQ1OSwyOSBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVT
dHJ1Y3QsCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zm
c2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAs
IHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgdDIsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFByb3Rv
TG9hZDoKLSAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5v
cEdldEJ5SWRBcnJheUxlbmd0aAorICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6
OlByb3RvTG9hZCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QzXSwgdDEKICAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKICAgICBiaW5lcSB0
MywgdDEsIHNsb3dMYWJlbAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVt
b2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9M
b2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAot
Lm9wR2V0QnlJZEFycmF5TGVuZ3RoOgotICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1v
ZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKLSAgICBtb3ZlIHQzLCB0MAotICAgIGFy
cmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElz
QXJyYXksIHNsb3dMYWJlbAotICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFi
ZWwKLSAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAotICAgIGxvYWRpIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xl
bmd0aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCi0gICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIEludDMyVGFnLCB0MCkKLSAgICBy
ZXR1cm4oSW50MzJUYWcsIHQwKQorIyBJdCBjYW4ndCBiZSBhcnJheSBsZW5ndGggc2luY2Ugd2Ug
ZG9uJ3QgdXNlIHRoaXMgZm9yIGFyYml0cmFyeSBnZXRfYnlfaWQncyB0aGF0IGNvdWxkCisjIGFj
Y2VzcyAibGVuZ3RoIi4gV2Ugb25seSB1c2UgaXQgZm9yIGl0ZXJhdG9yIG9wY29kZXMgd2hpY2gg
YXJlbid0IHVzaW5nICJsZW5ndGgiIGFzIGFuCisjIGlkZW50aWZpZXIuCiAgICAgCiAub3BHZXRC
eUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBs
b2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1v
ZGUuc3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5l
ZFRhZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgVW5kZWZpbmVkVGFnLCAwLCB0MykKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQog
CiBlbmQKQEAgLTE1MDYsMjAgKzE0OTksMjAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWQsIE9wR2V0QgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAu
b3BHZXRCeUlkU2xvdwogICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFk
YXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0NV0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlk
LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9w
cm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlk
QXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlM
ZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbW92ZSB0MywgdDIK
LSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJy
YXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCkKKyAgICBhcnJheVByb2ZpbGUo
T3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQxKQogICAg
IGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdT
aGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5
W3QzXSwgdDAKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIC5vcEdl
dEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgSW50
MzJUYWcsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIElu
dDMyVGFnLCB0MCwgdDMpCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIAogLm9wR2V0QnlJZFVu
c2V0OgpAQCAtMTUyNyw3ICsxNTIwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
aWQsIE9wR2V0QgogICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcsIDApCisgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwLCB0
MykKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRCeUlkRGVmYXVsdDoKQEAg
LTE1MzYsNyArMTUyOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdl
dEIKICAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVs
dE1vZGUuY2FjaGVkT2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmls
ZSwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1
LCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRTbG93OgpAQCAt
MTU0Niw3ICsxNTM5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QgogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChv
cF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQzKQogICAgIHJldHVybihyMSwgcjApCiAK
IGVuZCkKQEAgLTE2MjQsNyArMTYxNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X3ZhbCwgT3BHZXQKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1
bHRQYXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2Fk
KQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJU
YWcsIHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQK
IApAQCAtMTYzMyw3ICsxNjI2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldAogICAgICAgICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAg
ICBzdG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBz
dG9yZWkgc2NyYXRjaDIsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNo
MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0
Y2gzLCBzY3JhdGNoMiwgc2NyYXRjaDEpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApA
QCAtMTY0MSw3ICsxNjM0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldAogICAgIGdldChtX2Jhc2UsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQogICAgIG1vdmUgdDAs
IHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZSwgdDIsIHQ1LCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxLCB0MykKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwg
Lm9wR2V0QnlWYWxTbG93KQogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQz
CkBAIC0xNjc4LDcgKzE2NzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0CiAub3BHZXRCeVZhbE5vdEVtcHR5OgogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxLCB0MykKICAgICBkaXNw
YXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNjkxLDcgKzE2ODQs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAub3NyUmV0dXJu
UG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWws
IHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1f
cHJvZmlsZSwgdDIsIHIxLCByMCwgdDMpCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAt
MTcxMiw3ICsxNzA1LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1l
LAogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRQcml2YXRl
TmFtZVNsb3cKIAogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwg
dDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0NSwg
dDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRQcml2YXRlTmFtZVNsb3c6
CkBAIC0xNzc0LDcgKzE3NjcsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjCiAKICAgICAgICAgLm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlhZXEgdDMsIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxl
bmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0b3JlYiAxLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVb
dDVdCisgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlW3Q1XSwgdDIKKyAgICAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5
U3RvcmVUb0hvbGVbdDJdCiAgICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgogICAgICAgICAgICAg
c3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVu
Z3Rocy5wdWJsaWNMZW5ndGhbdDBdCiAgICAgICAgICAgICBqbXAgLnN0b3JlUmVzdWx0CkBAIC0x
Nzg1LDcgKzE3NzksNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
CiAgICAgICAgIGdldChtX2Jhc2UsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAgICAgICAg
bW92ZSB0MSwgdDIKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5UHJvZmlsZSglb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MykKICAg
ICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZChzaXplLCB0MCwgSW50MzJUYWcsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAg
IGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwCkBAIC0xODM5LDcgKzE4MzMsOCBA
QCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGRpc3Bh
dGNoKCkKIAogICAgIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHk6Ci0gICAgICAgIHN0b3Jl
YiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVU
b0hvbGVbdDVdCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGVbdDVdLCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0
b3JlVG9Ib2xlW3QxXQogICAgICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJ
blZlY3Rvclt0MF0KICAgICAgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5k
ZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQdXRCeVZhbEFycmF5
U3RvcmFnZVN0b3JlUmVzdWx0CiAgICAgICAgIGFkZGkgMSwgdDMsIHQxCkBAIC0xODQ3LDcgKzE4
NDIsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAg
IGptcCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAKICAgICAub3BQdXRCeVZh
bE91dE9mQm91bmRzOgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2FycmF5UHJvZmlsZS5tX291dE9mQm91bmRzW3Q1XQorICAgICAgICBsb2FkcCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAgc3RvcmVi
IDEsIEFycmF5UHJvZmlsZTo6bV9vdXRPZkJvdW5kc1t0MV0KICAgICAub3BQdXRCeVZhbFNsb3c6
CiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAg
ICAgICAgZGlzcGF0Y2goKQpAQCAtMjUxNSw3ICsyNTExLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAg
bG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKKyAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQz
KQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTI0LDcgKzI1MjAsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRw
IFRhZ09mZnNldFt0MF0sIHQxCiAgICAgICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdDBdLCB0Mgog
ICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQxKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQzKQogICAgICAgICByZXR1
cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTMyLDcgKzI1MjgsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3Bl
OjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52
aXJvbm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0MywgOF0sIHQxCiAgICAgICAgIGxv
YWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAsIHQz
LCA4XSwgdDIKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUs
IHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9m
aWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02OCwx
NSArNjgsMTYgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZwogICAg
IGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRh
dGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUs
IHQxLCB0MykKKyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0
MSwgdDMsIHQyKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMsIFtj
ZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCi0g
ICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUu
bV9idWNrZXRzW21ldGFkYXRhXQorbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJv
ZmlsZU5hbWUsIG1ldGFkYXRhLCB2YWx1ZSwgc2NyYXRjaCkKKyAgICBsb2FkcCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSVbbWV0YWRhdGFdLCBzY3JhdGNoCisgICAgc3Rv
cmVxIHZhbHVlLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0c1tzY3JhdGNoXQogZW5kCiAKICMgQWZ0
ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMg
YXJlIG5vdCB1c2VkLgpAQCAtODcsNyArODgsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChz
aXplLCBvcGNvZGVTdHJ1CiAgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJl
Z2lzdGVyLCB0MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNp
emUsIG9wY29kZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjAsIHQzKQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBA
IC0xNTA5LDcgKzE1MTAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJl
Y3QsCiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9w
R2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZERpcmVjdCwgbV9wcm9maWxlLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERp
cmVjdCwgbV9wcm9maWxlLCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJ
ZERpcmVjdFNsb3c6CkBAIC0xNTE4LDcgKzE1MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZF9kaXJlY3QsCiBlbmQpCiAKICMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVk
IGluIHQzCi1tYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRh
ZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJl
dHVybikKK21hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFk
YXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0
dXJuLCBkb0FycmF5UHJvZmlsZSkKICAgICBtZXRhZGF0YSh0MiwgdDEpCiAgICAgbG9hZGIgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAK
QEAgLTE1MjksNyArMTUzMCw3IEBAIG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0
cnVjdCwKICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAogICAgIGxvYWRpcyAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZz
ZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkK
LSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAp
CisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQw
LCB0MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CkBAIC0xNTQwLDI3
ICsxNTQxLDI3IEBAIG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwKICAg
ICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJv
dG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0
Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQx
KQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQx
LCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAg
ICBtb3ZlIHQzLCB0MAotICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVtb2RlTWV0YWRhdGFOYW1lJS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIs
IHQ1KQorICAgIGRvQXJyYXlQcm9maWxlKHQwLCB0MiwgdDUsIHQxKQogICAgIGJ0aXogdDAsIElz
QXJyYXksIHNsb3dMYWJlbAogICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFi
ZWwKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwLCB0
MSkKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUu
bGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAog
ICAgIG9ycSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlk
VW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2Fk
aSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUu
c3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZp
bmVkKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCBWYWx1ZVVuZGVmaW5lZCwgdDEpCiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQogCiBlbmQK
QEAgLTE1NjgsNyArMTU2OSwxMCBAQCBlbmQKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQogICAgIGdldChtX2Jhc2UsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxs
KHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCi0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIo
T3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQs
IG1fbW9kZU1ldGFkYXRhLCBtX3Byb2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0
YSwgcmV0dXJuLAorICAgICAgICBtYWNybyAoY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEs
IHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEs
IHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgZW5kKQogCiAub3BHZXRCeUlkU2xvdzoKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCkBAIC0xNTc3LDcgKzE1
ODEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAub3NyUmV0
dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9p
ZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZCwgbV9wcm9maWxlLCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9m
aWxlLCB0MiwgcjAsIHQzKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTY5OCw3ICsxNzAy
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogICAgIG1hY3Jv
IGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3Jh
dGNoKQogICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQorICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0LCBzY3JhdGNoKQog
ICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE3MTksNyArMTcyMyw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAogICAgIG1vdmUgdDAs
IHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZSwgdDIsIHQ1LCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxLCB0MykKIAogICAgIGdldChtX3Byb3BlcnR5LCB0MykK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZh
bFNsb3cpCkBAIC0xNzU5LDcgKzE3NjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV92YWwsIE9wR2V0CiAKIC5vcEdldEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQw
LCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgIGRp
c3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE3NzIsNyArMTc3
Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIC5vc3JSZXR1
cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3Zh
bCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIG1fcHJvZmlsZSwgdDUsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCByMCwgdDMpCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNzk0LDcgKzE3
OTgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUsCiAKICAgICBs
b2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDIsIHQwLCB0MykKICAgICByZXR1cm4odDApCiAK
IC5vcEdldFByaXZhdGVOYW1lU2xvdzoKQEAgLTE4OTcsNyArMTkwMSw4IEBAIG1hY3JvIHB1dEJ5
VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKIAogICAgICAgICAub3V0T2ZCb3VuZHM6CiAg
ICAgICAgICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRPZkJvdW5kcwot
ICAgICAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVBy
b2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0MgorICAgICAgICAgICAgc3RvcmVi
IDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0Ml0KICAgICAgICAgICAgIGFkZGkg
MSwgdDMsIHQyCiAgICAgICAgICAgICBzdG9yZWkgdDIsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0KICAgICAgICAgICAg
IGptcCAuc3RvcmVSZXN1bHQKQEAgLTE5MDcsNyArMTkxMiw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNl
bGwoc2l6ZSwgdDAsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5
UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUs
IHQwLCB0MykKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAg
IHN4aTJxIHQzLCB0MwpAQCAtMTk2Miw3ICsxOTY3LDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZh
bEFycmF5U3RvcmFnZUVtcHR5OgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAg
ICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0KICAgICAgICAg
YWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJp
YiB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAg
ICAgICBhZGRpIDEsIHQzLCB0MQpAQCAtMTk3MCw3ICsxOTc2LDggQEAgbWFjcm8gcHV0QnlWYWxP
cChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0
b3JhZ2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoKLSAgICAgICAg
c3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRP
ZkJvdW5kc1t0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Fy
cmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0
T2ZCb3VuZHNbdDFdCiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKQEAgLTI2
NjIsNyArMjY2OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8K
ICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldCh0MSwgdDAsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUs
IG1fcHJvZmlsZSwgdDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUs
IG1fcHJvZmlsZSwgdDUsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQyKQogICAgIGVuZAogCkBA
IC0yNjcwLDE0ICsyNjc3LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2Nv
cGUsIE8KICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRb
dDVdLCB0MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAogICAgICAgICB0ZHpDaGVja0lmTmVjZXNz
YXJ5KHQwKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwg
dDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwg
dDUsIHQwLCB0MykKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0
Q2xvc3VyZVZhcigpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9v
cGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFi
bGVzW3QwLCB0MSwgOF0sIHQwCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
bV9wcm9maWxlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
bV9wcm9maWxlLCB0NSwgdDAsIHQzKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAg
LTMwMDIsNyArMzAwOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3Blbiwg
T3AKIAogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQzKQogICAgIGJ0cW56IHQz
LCBub3RDZWxsTWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdwotICAgIHBlcmZv
cm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJv
ZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0
b3JlTmV4dEFuZERpc3BhdGNoKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JP
cGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNH
ZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoLCBtYWNybyhh
LCBiLCBjLCBkKSBlbmQpCiAKIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKQEAg
LTMwNjEsNyArMzA2OCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwg
T3AKIAogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQogICAgIGJ0cW56IHQzLCBu
b3RDZWxsTWFzaywgLmdldERvbmVTbG93Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVy
YXRvck5leHQsIG1fZG9uZU1vZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93
LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSkKKyAgICBwZXJmb3Jt
R2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQ
cm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dl
dFZhbHVlLCBtYWNybyhhLCBiLCBjLCBkKSBlbmQpCiAKIC5nZXREb25lU2xvdzoKICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQpAQCAtMzA4
Niw3ICszMDkzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcAog
ICAgICMgUmVsb2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92
ZSBtYXkgaGF2ZSBjbG9iYmVyZWQgdDMuCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwg
dDMpCiAgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQg
aXMgYSBjZWxsIGhlcmUgc2luY2Ugd2Ugd2lsbCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUu
Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0
YWRhdGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3Rv
cmVWYWx1ZUFuZERpc3BhdGNoKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JO
ZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZhbHVlU2xvdywg
c2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkg
ZW5kKQogCiAuZ2V0VmFsdWVTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQpAQCAtMzE1OSw3ICszMTY2LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9lbnVtZXJhdG9yX2dldF9ieQogICAgIGxvYWRxIGNvbnN0ZXhwciAoKG9m
ZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSkgKiBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKVt0MCwgdDIsIDhdLCB0MgogCiAuZG9uZToKLSAgICB2YWx1ZVByb2ZpbGUoT3BFbnVt
ZXJhdG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEVu
dW1lcmF0b3JHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgIHJldHVybih0MikK
IAogLmdldFNsb3dQYXRoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjg0LDExICsxMjg0LDEyIEBAIG1hY3JvIGdldHRlclNldHRlck9TUkV4aXRSZXR1
cm5Qb2ludChvcE4KICAgICBsb2FkaSBMTEludFJldHVyblBDW2Nmcl0sIFBDCiBlbmQKIAotbWFj
cm8gYXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNj
cmF0Y2gpCittYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBt
ZXRhZGF0YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGNvbnN0IGNlbGwgPSBjZWxsQW5kSW5k
ZXhpbmdUeXBlCiAgICAgY29uc3QgaW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZSAK
LSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHNjcmF0Y2gKLSAgICBzdG9y
ZWkgc2NyYXRjaCwgb2Zmc2V0ICsgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURb
bWV0YWRhdGFdCisgICAgbG9hZHAgb2Zmc2V0W21ldGFkYXRhXSwgc2NyYXRjaDIKKyAgICBsb2Fk
aSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHNjcmF0Y2gxCisgICAgc3RvcmVpIHNjcmF0
Y2gxLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFtzY3JhdGNoMl0KICAgICBs
b2FkYiBKU0NlbGw6Om1faW5kZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBl
bmQKIApAQCAtMTYxMiw4ICsxNjEzLDggQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihw
cm9maWxlQXJnUwogICAgIGFkZHAgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1
c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQogICAgIGFzc2VydChtYWNybyAob2spIGJw
Z3RlcSB0MCwgMCwgb2sgZW5kKQogICAgIGJ0cHogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCi0g
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIEZpeGVkVmVjdG9y
OjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0MV0sIHQzCi0gICAgYnRweiB0
MywgLmFyZ3VtZW50UHJvZmlsZURvbmUgIyBXaGVuIHdlIGNhbid0IEpJVCwgd2UgZG9uJ3QgYWxs
b2NhdGUgYW55IGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVzLgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV91bmxpbmtlZENvZGVbdDFdLCB0MworICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3Zh
bHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5Ojpt
X2RhdGFbdDNdLCB0MwogICAgIG11bHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFh
YWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKICAgICBsc2hpZnRwIDMsIHQwICMgb2Zm
c2V0IG9mIGxhc3QgSlNWYWx1ZSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLgogICAgIGFkZHAgdDIs
IHQzICMgcG9pbnRlciB0byBlbmQgb2YgVmFsdWVQcm9maWxlIGFycmF5IGluIENvZGVCbG9jazo6
bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkocmV2
aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDcgQEAgQnl0
ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZShDb2RlQgogICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5u
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIENTdHJpbmcgZGVz
Y3JpcHRpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGkpLmJyaWVmRGVz
Y3JpcHRpb24obG9ja2VyKTsKKyAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9j
ay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbigpOwogICAgICAg
ICBpZiAoIWRlc2NyaXB0aW9uLmxlbmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIG91dC5yZXNldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgUFJPRklMRV9WQUxVRV9JTih2
YWx1ZV9fLCBtX3Byb2ZpbGUpCiAKICNkZWZpbmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwgcHJv
ZmlsZU5hbWUpIGRvIHsgXAotICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLnBy
b2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyAgICAg
ICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS0+bV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiBzdGF0
aWMgdm9pZCB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCkBAIC04ODcsNyArODg3LDcgQEAgQUxX
QVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0bwogICAgIEpTQ2VsbCogaXRlcmFi
bGUgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYWJsZSkuanNWYWx1ZSgpLmFzQ2VsbCgpOwogICAgIGlm
IChhdXRvIGFycmF5SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KHZt
LCBpdGVyYXRvcikpIHsKICAgICAgICAgaWYgKGF1dG8gYXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpT
QXJyYXkqPih2bSwgaXRlcmFibGUpKSB7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhYmxl
UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChhcnJh
eS0+c3RydWN0dXJlSUQoKSk7CiAKICAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0
YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMg
fCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CiAgICAgICAgICAgICBhdXRvJiBpbmRleFNsb3Qg
PSBhcnJheUl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6Oklu
ZGV4KTsKQEAgLTk5Myw3ICs5OTMsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2VuCiAgICAgQVNTRVJUKCFiYXNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7CiAg
ICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZl
U3RydWN0dXJlSUQoYmFzZS0+c3RydWN0dXJlSUQoKSk7CisgICAgbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlLT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgIEpT
U3RyaW5nKiBuYW1lID0gZW51bWVyYXRvci0+Y29tcHV0ZU5leHQoZ2xvYmFsT2JqZWN0LCBiYXNl
LCBpbmRleCwgbW9kZSk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CkBAIC0xMDE5LDcgKzEwMTks
NyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAgICAgc3dpdGNo
IChtb2RlKSB7CiAgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRNb2Rl
OiB7CiAgICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgICAg
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2Zp
bGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkp
OwogICAgICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpKTsKICAgICB9CiAgICAgY2FzZSBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGU6IHsKQEAgLTEwMzQsNyArMTAzNCw3IEBA
IEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW4KIAogICAgIGNhc2UgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpHZW5lcmljTW9kZTogewogICAgICAgICBpZiAoYmFzZVZh
bHVlLmlzQ2VsbCgpICYmIG1vZGUgIT0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1
Y3R1cmVNb2RlKQotICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2ZVN0
cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgICAg
ICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0
cmluZyhHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eU5hbWUpLmpzVmFsdWUoKSk7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBKU0NfREVGSU5F
X0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAgICAgfQogCiAgICAgSlNTdHJpbmcqIHN0
cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsK
LSAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9i
amVjdCwgYmFzZVZhbHVlLCBzdHJpbmcsICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKKyAg
ICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlLCBzdHJpbmcsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOwogfQogCiBK
U0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9w
cm9wZXJ0eSkK
</data>
<flag name="commit-queue"
          id="461030"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437788</attachid>
            <date>2021-09-09 14:40:42 -0700</date>
            <delta_ts>2021-09-09 15:03:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>109720</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAyMS0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMgZm9yIG5vbi1jYWxsIG9wY29kZXMgaW50bworICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jay4gVGhpcyB3YXksIHRoZSBkYXRhIGlzIHNoYXJlZCBiZXR3
ZWVuIHRoZSBsaW5rZWQgQ29kZUJsb2NrcworICAgICAgICBvZiB0aGUgc2FtZSBVbmxpbmtlZENv
ZGVCbG9jay4gVGhlIHByb2ZpbGluZyBiZXQgaGVyZSBpcyB0aGF0IHdoZW4gdGhlIHNhbWUgY29k
ZQorICAgICAgICBydW5zIGluIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QsIGl0IGxhcmdlbHkg
cnVucyBpbiB0aGUgc2FtZSB3YXkuIFdlJ3ZlIG1hZGUKKyAgICAgICAgdGhpcyBzYW1lIGJldCBp
biBvdGhlciB3YXlzIHdpdGggb3VyIHByb2ZpbGluZywgYW5kIGl0IGxhcmdlbHkgbWFrZXMgc2Vu
c2UKKyAgICAgICAgdG8gZG8gZm9yIFZhbHVlUHJvZmlsZSBhbmQgQXJyYXlQcm9maWxlIHNpbmNl
IHRoZXkgYm90aCBob2xkIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaW5kZXBlbmRlbnQgZGF0YS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBpdCBzbyB3ZSBubyBsb25n
ZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAgICBwcm9jZXNzaW5nIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxvdyBtdWx0aXBsZSBjb21waWxl
cgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNoIG90aGVyIHdoZW4gdXBkYXRp
bmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAgICAgSXQgbWF5IGVuZCB1cCB3
aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1dCBpdCB3b24ndCBjb3JydXB0
IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIG1lYXN1cmVkIGFzIGEgMSUgc3BlZWR1
cCBvbiBTcGVlZG9tZXRlcjIuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbik6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZWRBcnJheU1vZGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjptYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6Om1heVN0b3JlVG9Ib2xlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjpvdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNo
ZWNrcG9pbnQuaDoKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVycyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2
ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGljdGlv
bnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rp
b25Gb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNo
QXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJyYXlMZW5ndGhNb2RlKToKKyAg
ICAgICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChK
U0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyOjpwcmVkaWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxl
Lmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZW5zdXJlVmFsdWVQcm9maWxlcyk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjplbnN1cmVBcnJheVByb2ZpbGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxl
QmFzZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6
OmNsZWFyQnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmJyaWVmRGVz
Y3JpcHRpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RC
dWNrZXQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2Rl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBj
b25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRv
TWFrZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U6
OnJ1bik6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNv
ZGUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0
QnlWYWxPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OmRpcmVjdFB1dEJ5VmFsT3B0aW1pemUpOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfZnJvbV9zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZvcm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5
dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorCiAyMDIxLTA5
LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYWRkIGZpbGVzIHRvIHhjb2RlcHJvagpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsMTggKzExOCwyMyBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFt
JiBvdXQsIEFyCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkJpZ1VpbnQ2NEFycmF5TW9kZSIp
OwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQg
QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlSUQpCisgICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAg
IFN0cnVjdHVyZUlEIGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOworICAgIGlmICghaWQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9sYXN0U2VlblN0cnVj
dHVyZUlEKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ss
IGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOworICAgIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQordm9pZCBBcnJheVByb2Zp
bGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkKIHsKKyAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxk
IGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuIFRoYXQgd29uJ3QgbGVhZAor
ICAgIC8vIHRvIGFueSBmb3JtIG9mIGNvcnJ1cHRpb24sIGJ1dCBjb3VsZCBjYXVzZSB1cyB0byBn
byBkb3duICFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKKyAgICAvLyBwYXRoIHNpbXVsdGFu
ZW91c2x5LgogICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZXNGcm9tU3RydWN0
dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0
UnVuUHJ1bmluZwpAQCAtMTYzLDEzICsxNjgsMTMgQEAgdm9pZCBBcnJheVByb2ZpbGU6Om9ic2Vy
dmVJbmRleGVkUmVhZChWTQogICAgIH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVm
RGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
Y29kZUJsb2NrKQorQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
Y29kZUJsb2NrKTsKLSAgICByZXR1cm4gYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhs
b2NrZXIpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2spOworICAgIHJl
dHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CiB9CiAKLUNTdHJpbmcgQXJy
YXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhv
dXRVcGRhdGluZygpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJp
bnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDIyICsyMTcsMjIg
QEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOyB9CiAgICAgdm9p
ZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7Ci0gICAgdm9p
ZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgdm9pZCBjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlN
b2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVk
QXJyYXlNb2RlczsgfQotICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzOyB9CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7
IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9Ib2xlKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KLSAgICBib29sIG91dE9m
Qm91bmRzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZC
b3VuZHM7IH0KKyAgICBib29sIG1heVN0b3JlVG9Ib2xlKCkgY29uc3QgeyByZXR1cm4gbV9tYXlT
dG9yZVRvSG9sZTsgfQorICAgIGJvb2wgb3V0T2ZCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX291
dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOyB9CiAKLSAgICBD
U3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJs
b2NrKik7Ci0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihDb2Rl
QmxvY2sqKTsKKyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsK
ICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIG9wIDpnZXRf
YXJndW1lbnQsCiAgICAgICAgIGluZGV4OiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmFyZ3VtZW50X2NvdW50LApAQCAtMTgzLDcgKzE4Myw3IEBA
IG9wIDp0b190aGlzLAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhY2hlZFN0cnVjdHVyZUlE
OiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMsCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6Y2hlY2tfdGR6LApAQCAtMzA5LDcgKzMwOSw3IEBAIG9wX2dyb3Vw
IDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcCA6Yml0bm90LApAQCAt
MzE4LDcgKzMxOCw3IEBAIG9wIDpiaXRub3QsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZQorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3BfZ3JvdXAg
OlVuYXJ5T3AsCkBAIC0zNjMsNyArMzYzLDcgQEAgb3AgOnRvX29iamVjdCwKICAgICAgICAgbWVz
c2FnZTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0K
IAogb3BfZ3JvdXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLApAQCAtMzc2LDcgKzM3Niw3IEBAIG9w
X2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5hcnlPcCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpu
ZWdhdGUsCkBAIC00NDUsNyArNDQ1LDcgQEAgb3AgOmluX2J5X3ZhbCwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmluX2J5X2lkLApAQCAtNDc3LDcgKzQ3Nyw4IEBAIG9wIDpn
ZXRfYnlfaWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OCw3
ICs0ODksNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpn
ZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTQ5OSw3ICs1MDAsNyBAQCBvcCA6Z2V0X2J5X3ZhbF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBA
IC01MDksNyArNTEwLDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgfQpAQCAtNTIwLDcgKzUyMSw3
IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0cnlfZ2V0
X2J5X2lkLApAQCAtNTMwLDcgKzUzMSw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAg
IH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3MSw4ICs1NzIsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6
IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAgLTU4Myw3ICs1ODQsNyBAQCBvcCA6Z2V0X3By
aXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLApAQCAtNjMyLDcgKzYzMyw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Miw3ICs2
NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAog
b3AgOmRlbF9ieV92YWwsCkBAIC04NDIsNyArODQzLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOnRhaWxfY2FsbCwKQEAgLTg1NCw3ICs4NTUsNyBAQCBvcCA6
dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBA
IC04NjcsNyArODY4LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAg
fQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgwLDggKzg4MSw4IEBAIG9wIDpjYWxsX3ZhcmFy
Z3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
YXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZCwKQEAgLTkwMSw4ICs5MDIsOCBAQCBvcCA6
dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRt
cHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIyLDgg
KzkyMyw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3QsCkBAIC05MzUsNyArOTM2LDcgQEAgb3Ag
OmNvbnN0cnVjdCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y29uc3RydWN0X3Zh
cmFyZ3MsCkBAIC05NDgsOCArOTQ5LDggQEAgb3AgOmNvbnN0cnVjdF92YXJhcmdzLAogICAgICAg
ICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5j
bHVkaW5nVGhpczogdW5zaWduZWQKQEAgLTEwMjgsNyArMTAyOSw3IEBAIG9wIDpnZXRfZnJvbV9z
Y29wZSwKICAgICAgICAgICAgIHN0cnVjdHVyZTogV3JpdGVCYXJyaWVyQmFzZVtTdHJ1Y3R1cmVd
LAogICAgICAgICB9LAogICAgICAgICBvcGVyYW5kOiB1aW50cHRyX3QsICNvZmZzZXQgNgotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsICMgb2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosICMgb2Zmc2V0IDcKICAgICB9LAogICAgIG1ldGFkYXRhX2luaXRpYWxp
emVyczogewogICAgICAgICBnZXRQdXRJbmZvOiA6Z2V0UHV0SW5mbywKQEAgLTEwNjUsNyArMTA2
Niw3IEBAIG9wIDpnZXRfZnJvbV9hcmd1bWVudHMsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1
bWVudHMsCkBAIC0xMTczLDcgKzExNzQsNyBAQCBvcCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAg
ICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9y
TWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg3LDggKzExODgsOCBAQCBvcCA6ZW51bWVyYXRvcl9n
ZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAg
IGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjAyLDcg
KzEyMDMsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9ieV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAg
ICB9CiAKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG9wIDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6
IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyNDksMTEgKzEyNTAsMTEgQEAgb3Ag
Oml0ZXJhdG9yX29wZW4sCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBpdGVyYXRp
b25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAgICBpdGVyYWJsZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgaXRl
cmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
LSAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbmV4dFByb2ZpbGU6
IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3lt
Ym9sQ2FsbDogbmlsLApAQCAtMTI3MiwxMyArMTI3MywxMyBAQCBvcCA6aXRlcmF0b3JfbmV4dCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxl
LAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBjYWxs
TGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
Ci0gICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBuZXh0UmVz
dWx0OiBKU1ZhbHVlLApAQCAtMTMyMiw3ICsxMzIzLDcgQEAgb3AgOmdldF9pbnRlcm5hbF9maWVs
ZCwKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDpwdXRfaW50ZXJuYWxfZmllbGQsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5k
c0ZvckNoZWNrcG9pbnQuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDIwICs1NywyMCBAQCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwo
Qnl0ZWNvCiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3Rl
eHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRv
ck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7Ci0g
ICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9u
ZXh0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0
dXJuIG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JP
cGVuOjpnZXROZXh0OiByZXR1cm4gbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBl
bHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0
b3JfbmV4dCkgewogICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBj
YXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRS
ZXN1bHRQcm9maWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1
cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBjYXNl
IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3Vs
dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBt
ZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZTogcmV0dXJuIG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAg
ICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRh
Lm1fcHJvZmlsZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYgKzM3NCwxMCBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhWTSYgdm0sIFN0cnVjdHVyZSogCiBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKKyAgICAvLyBX
ZSBjYW4ndCBmaW5hbGl6ZSBhIEdDIHdoaWxlIGluIGhlcmUgc2luY2Ugd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8KKyAgICAvLyBtYWtlIHN1cmUgb3VyIFZhbHVlUHJvZmlsZXMgYWxsIHBvaW50IHRv
IHByb3BlciBsb2NhdGlvbnMuCisgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5pc0RlZmVycmVk
KCkpOyAKKwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBmaW5pc2hDcmVhdGlv
bkNvbW1vbih2bSk7CiAKQEAgLTQzNSw3ICs0MzksOCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5j
ZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICBhdXRvIGxpbmtf
cHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29k
ZSovLCBhdXRvJiAvKm1ldGFkYXRhKi8pIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsmXShj
b25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiBtZXRh
ZGF0YSkgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFZhbHVlUHJvZmls
ZSosIGRlY2x0eXBlKG1ldGFkYXRhLm1fcHJvZmlsZSk+KTsKICAgICAgICAgbV9udW1iZXJPZk5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgIH07CiAKQEAgLTQ5OSw5ICs1MDQsOSBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAKICAgICAgICAgTElOSyhP
cEdldEJ5SWQsIHByb2ZpbGUpCiAKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0LCBwcm9m
aWxlKQotICAgICAgICBMSU5LKE9wRW51bWVyYXRvckluQnlWYWwsIHByb2ZpbGUpCi0gICAgICAg
IExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIHByb2ZpbGUpCisgICAgICAgIExJTkso
T3BFbnVtZXJhdG9yTmV4dCkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JJbkJ5VmFsKQorICAg
ICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093blByb3BlcnR5KQogICAgICAgICBMSU5LKE9wRW51
bWVyYXRvckdldEJ5VmFsLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxl
KQpAQCAtNzYxLDYgKzc2Niw5NiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksKIAorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7CisgICAgICAg
IGlmIChtX21ldGFkYXRhKSB7CisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgICAgIHNp
emUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOworICAgICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAg
ICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVuPigpICog
MzsKKyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
TmV4dD4oKSAqIDM7CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplKTsK
KworICAgICAgICBhdXRvJiB2YWx1ZVByb2ZpbGVzID0gdW5saW5rZWRDb2RlQmxvY2stPmVuc3Vy
ZVZhbHVlUHJvZmlsZXMoc2l6ZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkKKyAgICAgICAgICAgIHZhbHVl
UHJvZmlsZXNbaV0uY2xlYXJCdWNrZXRzKCk7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUgZmlyc3QgbnVtYmVyT2ZBcmd1
bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMK
KworICAgICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBhc3NpZ24gPSBb
Jl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlID0g
JnZhbHVlUHJvZmlsZXNbaW5kZXgrK107CisKKyAgICAgICAgICAgICAgICAvLyBUaGVzZSBWYWx1
ZVByb2ZpbGVzIGNvdWxkIGJlIHN0YWxlLCBzaW5jZSBVbmxpbmtlZENvZGVCbG9jayBkb2Vzbid0
IHZpc2l0CisgICAgICAgICAgICAgICAgLy8gdGhlbSBpbiBhbnkgd2F5LiBTbyB0aGV5IGNvdWxk
IGJlIGx5aW5nIGFyb3VuZCBmcm9tIHdoZW4gc29tZSBwcmlvciBDb2RlQmxvY2sKKyAgICAgICAg
ICAgICAgICAvLyB3YXMgZXhlY3V0aW5nLCBidXQgZGllZCBhZnRlciBzdG9yaW5nIHRvIHRoZW0u
IFNvIHRvIGJlIGNvbnNlcnZhdGl2ZSwgd2UgY2xlYXIKKyAgICAgICAgICAgICAgICAvLyBhbnkg
dW5wcm9jZXNzZWQgdmFsdWVzIG5vdy4KKyAgICAgICAgICAgICAgICBwcm9maWxlLT5jbGVhckJ1
Y2tldHMoKTsKKyAgICAgICAgICAgIH07CisKKyNkZWZpbmUgVklTSVQoX19vcCkgXAorICAgICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFz
c2lnbihtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyAKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwor
ICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAg
ICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fZG9u
ZVByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX3ZhbHVlUHJvZmls
ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZGV4ID09IHNpemUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9
IDA7CisKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAor
ICAgICAgICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7CisgICAg
ICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENPVU5UKQorI3VuZGVm
IENPVU5UCisgICAgICAgICAgICBzaXplICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8T3BJdGVy
YXRvck5leHQ+KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAg
ICAgYXV0byYgYXJyYXlQcm9maWxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5lbnN1cmVBcnJheVBy
b2ZpbGVzKHNpemUpOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworCisgICAgICAg
ICAgICBhdXRvIGFzc2lnbiA9IFsmXSAoQXJyYXlQcm9maWxlKiYgcHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgIHByb2ZpbGUgPSAmYXJyYXlQcm9maWxlc1tpbmRleCsrXTsKKworICAgICAgICAg
ICAgICAgIC8vIFNlZSBjb21tZW50IGFib3ZlIGFib3V0IHdoeSB3ZSBjbGVhciBvdXQgc3RhbGUg
dmFsdWVzIGluIHZhbHVlIHByb2ZpbGVzLgorICAgICAgICAgICAgICAgIC8vIFdlIGRvIHRoZSBh
bmFsb2dvdXMgdGhpbmcgaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAg
IHByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGUgb3Bjb2Rl
cyBpbiBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFLgorICAgICAgICAgICAgLy8g
V2UgZG9uJ3QgeWV0IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGluZ3Mgd2l0aCBMTEludCBD
YWxsTGlua0luZm9zLgorI2RlZmluZSBWSVNJVChfX29wKSBcCisgICAgICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUKQorI3VuZGVmIFZJU0lUCisKKyAgICAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAg
ICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHNpemUpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhD
b250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAtOTI4LDggKzEwMjMsNiBAQCB2
b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJuYXRpdmUoVk0mIHZtLCBDCiB2b2lkIENvZGVCbG9jazo6
c2V0TnVtUGFyYW1ldGVycyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRl
cnMgPSBuZXdWYWx1ZTsKLQotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0
b3I8VmFsdWVQcm9maWxlPihPcHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAK
IENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0y
NzczLDcgKzI4NjYsNyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxl
CiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI2RlZmluZSBDQVNFMShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOworICAgICAgICByZXR1
cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOwog
CiAjZGVmaW5lIENBU0UyKE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKQEAgLTI3ODUs
MTMgKzI4NzgsNiBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlCiAj
dW5kZWYgQ0FTRTEKICN1bmRlZiBDQVNFMgogCi0gICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29kZUlE
OiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigp
OwotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAg
ICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJy
YXlMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yOTAwLDE5ICsyOTg2LDE5IEBAIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICAgICAgICAgIG51bVNh
bXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBw
cm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0Lgog
ICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7CiAgICAgICAg
IGlmIChpc0FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocHJv
ZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAg
ICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7Ci0gICAgICAg
IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfSk7CiAKICAgICBpZiAobV9tZXRh
ZGF0YSkgewogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsmXShhdXRvJiBt
ZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fYnVmZmVyKSB7CiAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2goWyZdKFZhbHVlUHJvZmlsZUFuZFZp
cnR1YWxSZWdpc3RlciYgcHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKQEAgLTI5MzEsMTAgKzMwMTcsOCBAQCB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxBcnJheVByZWRpY3Rpb25zKCkKIHsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7Ci0gICAgCiAgICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQcm9maWxlJiBw
cm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
ciwgdGhpcyk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMp
OwogICAgIH0pOwogICAgIAogICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShB
cnJheUFsbG9jYXRpb25Qcm9maWxlJiBwcm9maWxlKSB7CkBAIC0zMTY0LDcgKzMyNDgsNyBAQCBW
YWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9mCiAKICNkZWZpbmUgQ0FTRShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIGlu
c3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX3Byb2ZpbGU7CiAKICAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDQVNFKQogCkBAIC0zMTgxLDEwICsz
MjY1LDEwIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2YKICAgICB9
CiB9CiAKLVNwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZv
ckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCkKK1NwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9m
aWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KQogewogICAgIGlmIChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSA9IHRyeUdldFZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiB2YWx1
ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICByZXR1
cm4gdmFsdWVQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICByZXR1cm4g
U3BlY05vbmU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDE5ICs0NzQsMTYgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzLnNpemUoKSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9udW1QYXJhbWV0ZXJzKSB8fCAhT3B0aW9uczo6dXNlSklUKCkp
OwotICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpOworICAgICAg
ICByZXR1cm4gbnVtUGFyYW1ldGVycygpOwogICAgIH0KIAogICAgIFZhbHVlUHJvZmlsZSYgdmFs
dWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7IC8vIFRoaXMgaXMgb25seSBjYWxsZWQgZnJv
bSB0aGUgdmFyaW91cyBKSVQgY29tcGlsZXJzIG9yIHBsYWNlcyB0aGF0IGZpcnN0IGNoZWNrIG51
bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzIGJlZm9yZSBjYWxsaW5nIHRoaXMuCi0gICAgICAg
IFZhbHVlUHJvZmlsZSYgcmVzdWx0ID0gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXNbYXJndW1lbnRJ
bmRleF07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB1bmxpbmtlZENv
ZGVCbG9jaygpLT52YWx1ZVByb2ZpbGUoYXJndW1lbnRJbmRleCk7CiAgICAgfQogCiAgICAgVmFs
dWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwot
ICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZXgpOworICAgIFNwZWN1bGF0
ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoVmFsdWVQ
cm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwpAQCAtMTAxNSw3ICsxMDEy
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxvY2tzLgogICAgIENvbXByZXNz
ZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxl
czsKICNlbmRpZgotICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVl
UHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJf
bXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjIgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29ucwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNk
ZWZpbmUgVklTSVQoX19vcCkgXAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7
CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyBmdW5jKCptZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKIAogI3VuZGVmIFZJU0lUCiAKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeyAKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZh
bHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNl
KTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmls
ZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOwogICAgICAgICB9KTsK
ICAgICB9ICAgCiAKQEAgLTY0LDEzICs2NCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5j
KQogewogICAgIGlmIChtX21ldGFkYXRhKSB7Ci0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAobWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAg
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KICNkZWZpbmUgVklTSVQxKF9fb3ApIFwKLSAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyht
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19v
cD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7
IH0pOwogCiAjZGVmaW5lIFZJU0lUMihfX29wKSBcCiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxf
X29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8u
bV9hcnJheVByb2ZpbGUpOyB9KTsKQEAgLTgyLDcgKzc3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZv
ckVhY2hBcnJheVByb2ZpbGUoY29ucwogI3VuZGVmIFZJU0lUMgogCiAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAgICAgZnVu
YygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwogICAgICAgICB9KTsKICAgICB9CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0
YS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZE1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCw2IEBAIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdl
dEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIpOwogCi1zdHJ1Y3QgR2V0QnlJZE1vZGVNZXRh
ZGF0YUFycmF5TGVuZ3RoIHsKLSAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotfTsKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIp
OwotCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCB7CiAgICAgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwpAQCAtOTAs
NyArODUsNiBAQCB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB9OwogICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRh
dGFVbnNldCB1bnNldE1vZGU7Ci0gICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9h
ZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YSkgPT0g
MTYpOwpAQCAtMTEzLDcgKzEwNyw2IEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAg
ICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2Rl
OwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5zZXRNb2RlOwotICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5ndGhNb2RlOwogICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiAgICAgfTsKICAgICBH
ZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTM3LDcgKzEzMCw2IEBAIGlubGluZSB2b2lkIEdldEJ5SWRN
b2RlTWV0YWRhdGE6OnNldFVuc2UKIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNl
dEFycmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aDsKLSAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGU7
CiAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcu
CiAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyAr
MzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigpIHsgfQog
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3NlZExhenlP
cGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQordm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKQotICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogfQogCiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
OjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIExhenlP
cGVyYW5kVmFsdQogfQogCiBTcGVjdWxhdGVkVHlwZSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBh
cnNlcjo6cHJlZGljdGlvbigKLSAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKKyAgICBjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5
KSBjb25zdAogewogICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0SWZQ
cmVzZW50KGtleSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm4gU3BlY05vbmU7
CiAgICAgCi0gICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOworICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDYgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBu
dW1FbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGF1dG8qIHN0YXJ0ID0gYml0d2lzZV9jYXN0PHR5
cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldChPcDo6b3Bjb2RlSUQpKTsKKyAgICAgICAgYXV0byog
ZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldEltcGwoT3A6Om9w
Y29kZUlEICsgMSkpOworICAgICAgICByZXR1cm4gZW5kIC0gc3RhcnQ7CisgICAgfQorCiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKICAgICB2b2lkIHJlZigpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2
ICsxMzksNyBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4CiAgICAg
bWFjcm8oT3BFbnVtZXJhdG9yR2V0QnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JJbkJ5
VmFsKSBcCiAgICAgbWFjcm8oT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNy
byhPcEdldEJ5SWQpIFwKIAogI2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9BTExP
Q0FUSU9OX1BST0ZJTEUobWFjcm8pIFwKICAgICBtYWNybyhPcE5ld0FycmF5KSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxOSw2ICs0MTksOCBAQCBwcml2
YXRlOgogICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgRml4
ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAg
IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb247CisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX3ZhbHVl
UHJvZmlsZXM7IC8vIFRoZSBmaXJzdCBudW1QYXJhbWV0ZXJzKCkgYXJlIGFyZ3VtZW50IHByb2Zp
bGVzLgorICAgIEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4gbV9hcnJheVByb2ZpbGVzOwogICAg
IHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+OwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZl
Y3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVu
Y3Rpb25FeHByczsKQEAgLTQ1Niw2ICs0NTgsMjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
b3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCisgICAg
VmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3ZhbHVlUHJvZmlsZXNbaV07CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8VmFsdWVQ
cm9maWxlPiYgZW5zdXJlVmFsdWVQcm9maWxlcyh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlmICghbV92YWx1ZVByb2ZpbGVzLnNp
emUoKSkKKyAgICAgICAgICAgIG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJv
ZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWVQcm9maWxlcy5zaXpl
KCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgfQorCisg
ICAgRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPiYgZW5zdXJlQXJyYXlQcm9maWxlcyh1bnNpZ25l
ZCBzaXplKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlm
ICghbV9hcnJheVByb2ZpbGVzLnNpemUoKSkKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9
IEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fYXJyYXlQcm9maWxlcy5zaXplKCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX2FycmF5
UHJvZmlsZXM7CisgICAgfQorCiBwcml2YXRlOgogICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJn
ZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDExIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVC
YXNlIHsKICAgICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAgICB7CisgICAgICAgIGNsZWFy
QnVja2V0cygpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJCdWNrZXRzKCkKKyAgICB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKQog
ICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAg
ICAgfQpAQCAtOTIsOSArOTcsOSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9u
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQorICAgIENTdHJpbmcgYnJpZWZEZXNj
cmlwdGlvbigpCiAgICAgewotICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICAgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgICAgIG91dC5wcmludCgicHJlZGljdGluZyAi
LCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CkBAIC0xMTgsMTAgKzEyMywxMCBAQCBz
dHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8g
VXBkYXRlcyB0aGUgcHJlZGljdGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4gTmV2ZXIgY2Fs
bCB0aGlzIGZyb20gYW55IHRocmVhZAotICAgIC8vIHRoYXQgaXNuJ3QgZXhlY3V0aW5nIHRoZSBj
b2RlLgotICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImKQorICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpCiAgICAgeworICAgICAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNh
bGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIC8vIFRoZSBpbXBvcnQg
cGFydCBpcyB0aGF0IHdlIGRvbid0IGVuZCB1cCBjb3JydXB0aW5nIGFueSB2YWx1ZXMuCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7
CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tp
XSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQpAQCAtMTU2LDYgKzE2MSw3IEBAIHN0cnVjdCBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6
IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1
ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoVmFsdWVQcm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLUFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6
QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKK0FycmF5TW9kZSBBcnJheU1vZGU6OmZyb21P
YnNlcnZlZChBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29s
IG1ha2VTYWZlKQogewogICAgIEFycmF5OjpDbGFzcyBub25BcnJheTsKLSAgICBpZiAocHJvZmls
ZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikpCisgICAgaWYgKHByb2ZpbGUt
PnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpKQogICAgICAgICBub25BcnJheSA9IEFycmF5
OjpPcmlnaW5hbE5vbkFycmF5OwogICAgIGVsc2UKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6
Tm9uQXJyYXk7CkBAIC02MywyNyArNjMsMjcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9i
c2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb252ZXJ0cyA9IEFycmF5
OjpBc0lzOwogCi0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVy
dHMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAg
ICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0
aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH07CiAKLSAgICBBcnJheU1vZGVzIG9i
c2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CisgICAgQXJyYXlN
b2RlcyBvYnNlcnZlZCA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwogICAgIHN3aXRj
aCAob2JzZXJ2ZWQpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlVucHJvZmlsZWQpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhOb25BcnJheSk6Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9m
aWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKKyAgICAgICAgaWYgKGFj
dGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdB
cmd1bWVudHMsIG5vbkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBh
Y3Rpb24pOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRp
Y3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2Nr
ZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbikud2l0aFNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFVuZGVjaWRlZCk6CiAgICAgICAgIGlmIChhY3Rp
b24gPT0gQXJyYXk6OldyaXRlKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdBcmd1bWVudHMsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBB
cnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFycmF5LCBBcnJheTo6
T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1h
a2VTYWZlKTsKICAgICAgICAgCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJy
YXlzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRo
VW5kZWNpZGVkKToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2Zp
bGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0
aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0Fy
Z3VtZW50cywgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6
OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVj
dFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEludDMyKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9y
aW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoSW50MzIpOgpAQCAtMTEzLDUwICsxMTMsNTAgQEAgQXJy
YXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICByZXR1cm4gaGFu
ZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpDb250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAgICBj
YXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwg
bm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFy
cmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFn
ZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIs
IHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJy
YXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6
QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlT
dG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHBy
b2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJh
eXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1
dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBl
ZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpQ
b3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24p
LndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDhBcnJheU1vZGU6
Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQ4QXJyYXksIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAg
Y2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tl
ciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJ
bnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJv
ZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6SW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4QXJy
YXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2Ug
VWludDE2QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50
MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9hdDMy
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXks
IG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQzMkFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwg
bWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkZsb2F0NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0ludDY0
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdVaW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgZGVm
YXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkgdHlw
ZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9uLXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1ha2Ug
c2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhlIG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29udmVy
dCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlmIChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJBWV9N
T0RFUykKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
bG9ja2VyKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5n
UHJlZGljdGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICBpZiAoKG9ic2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheSkpICYmIHByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQ
cmVkaWN0aW9ucykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgICAgICAKICAgICAgICAgQXJyYXk6OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6OkNs
YXNzIGFycmF5Q2xhc3M7CkBAIC0xODMsNyArMTgzLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6
ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcnJheUNsYXNz
ID0gQXJyYXk6OlBvc3NpYmx5QXJyYXk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gQXJyYXlN
b2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5
cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh3b3JkKTsKICAgICB9CiAgICAgCi0g
ICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CisgICAgc3Rh
dGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7CiAgICAgCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJh
eTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewpAQCAtMTkwLDEzICsxOTAs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cywgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAot
ICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBj
b25zdAorICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShBcnJheVByb2Zp
bGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6
U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsKIAogICAgICAgICBpZiAobWFrZVNhZmUpCiAgICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgICAgICBlbHNl
IGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIpKQorICAgICAgICBlbHNlIGlmIChw
cm9maWxlLT5tYXlTdG9yZVRvSG9sZSgpKQogICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFy
cmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBB
cnJheTo6SW5Cb3VuZHM7CkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CiAgICAgfQogICAgIAotICAgIEFy
cmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJy
YXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3
aXRoUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAg
ICAgewogICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNzOwogCiAgICAgICAgIGlmIChp
c0pTQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5
U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewotICAg
ICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJy
YXlNb2Rlcyhsb2NrZXIpOworICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcygpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgeworICAgICAg
ICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlN
b2RlcygpOwogICAgICAgICAgICAgICAgIGlmIChoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJh
eU1vZGVzKSAmJiAhaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCiAgICAgICAgICAg
ICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbENvcHlPbldyaXRlQXJyYXk7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5
TW9kZXMpICYmIGhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9kZXMpKQpAQCAtMjIyLDcgKzIy
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3Mg
PSBhcnJheUNsYXNzKCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3Mo
bXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUs
IG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH0KICAg
ICAKICAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uRnJvbUZvckNvZGVC
bG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewotICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbjsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBw
cmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJ
bmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBjb2RlQmxvY2stPnZhbHVl
UHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCgpKTsKICAgICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0gbV92bS0+ZnV6emVyQWdlbnQo
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2VudCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05ODMsMTAgKzk3OSw5IEBAIHBy
aXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYgcHJvZmls
ZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOwotICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmls
ZS5vdXRPZkJvdW5kcyhsb2NrZXIpOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2Jz
ZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jayk7CisgICAgICAgIGJvb2wgbWFrZVNhZmUgPSBwcm9maWxlLm91dE9mQm91bmRzKCk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZCgmcHJvZmlsZSwgYWN0aW9uLCBt
YWtlU2FmZSk7CiAgICAgfQogCiAgICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIw
NTgsOSArMjA1Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmkK
ICAgICAgICAgICAgIC8vIGFyZ3VtZW50cyByZWNlaXZlZCBpbnNpZGUgdGhlIGNhbGxlZS4gQnV0
IHRoYXQgcHJvYmFibHkgd29uJ3QgbWF0dGVyIGZvciBtb3N0CiAgICAgICAgICAgICAvLyBjYWxs
cy4KICAgICAgICAgICAgIGlmIChjb2RlQmxvY2sgJiYgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSB7Ci0gICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAg
ICAgICAgVmFsdWVQcm9maWxlJiBwcm9maWxlID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JB
cmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAg
dmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50
ID0gYWRkVG9HcmFwaChudW1TZXRBcmd1bWVudHMgPj0gbWFuZGF0b3J5TWluaW11bSA/IFNldEFy
Z3VtZW50TWF5YmUgOiBTZXRBcmd1bWVudERlZmluaXRlbHksIE9wSW5mbyh2YXJpYWJsZSkpOwpA
QCAtNjMwNSw3ICs2Mjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgaWYgKHNob3VsZENvbXBpbGVBc0dldEJ5SWQpCiAgICAgICAgICAg
ICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRl
bnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldEJ5
SWQsIG5leHRPcGNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAg
IEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2Ug
aXQgb25seSB1c2VzIHRocmVlIGNoaWxkCiAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCiAgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NDE5MgpAQCAtNzA3NSwxMSArNzA2OSw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1
bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBz
ZWVuQXJndW1lbnRzOwogCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9j
ayk7Ci0KICAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVB
bmRWaXJ0dWFsUmVnaXN0ZXImIHByb2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Y2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKQEAgLTc0MzEsNyArNzQyMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFs
bG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBk
b0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKIAotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJs
ZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJl
YWQpOwogICAgICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRo
b3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWUpKTsKIAogICAgICAgICAgICAgICAgIHsKQEAgLTgzMjYsNyArODMx
OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7Ci0gICAgICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAg
ICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2Rl
LmFzV29yZCgpKSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2luX2J5X3ZhbCk7CkBAIC04NDEwLDcgKzg0MDIsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVy
YXRvcl9uZXh0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVudW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJl
YWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0
KGJ5dGVjb2RlLm1faW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChi
eXRlY29kZS5tX2VudW1lcmF0b3IpOwpAQCAtODQ0Miw3ICs4NDM0LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1v
ZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJh
eTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsK
IAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODUw
Niw3ICs4NDk4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfaW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigp
OwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2Rl
IGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5
OjpSZWFkKTsKIAogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFz
ZSkpOwogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlO
YW1lKSk7CkBAIC04NTIxLDcgKzg1MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpS
ZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODg4MSw3ICs4ODczLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZQogICAgIH0KIAogICAgIGlm
ICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKLSAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBB
cnJheTo6V3JpdGUpOworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3Jp
dGUpOwogCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOwogICAgICAgICBhZGRWYXJBcmdD
aGlsZChwcm9wZXJ0eSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNDIsOSArNDA0Miw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIEFycmF5
OjpSZWFkKTsKICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkgewotICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJs
b2NrKTsKLSAgICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxv
Y2tlciwgYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOworICAgICAgICAgICAgYXJy
YXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24ocHJvZmlsZWRCbG9jayk7CisgICAg
ICAgICAgICBhcnJheU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChhcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9
PSBBcnJheTo6VW5wcm9maWxlZCkgewogICAgICAgICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJy
YXkgb3BlcmF0aW9ucywgaXQgbWFrZXMgc2Vuc2UgdG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAg
ICAgICAgICAgIC8vIGFjY2Vzc2VzIGFzIEZvcmNlRXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRo
ZXIgdGhhbiB1c2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgyMTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAK
ICAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkgPj0gMSk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9j
aygpLT5tX2xvY2spOwotICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRo
aXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZy
b20KICAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBv
cHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgogICAgICAgICAgICAgYXV0byYgYXJndW1l
bnRzID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52
YWx1ZTsKIAogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAg
ICAgICAgICAgICBWYWx1ZVByb2ZpbGUmIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7Ci0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10t
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAotICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKKyAgICAgICAgICAgICAgICBh
cmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw3ICsz
MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4uLik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0
YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2b2lkPgorICAgICAgICBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJv
ZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4KICAgICAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpOwogCiAgICAgICAgIHZvaWQg
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbEdQUiwgQXJyYXlQ
cm9maWxlKiwgUmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBA
IGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci1pbmxpbmUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4g
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkK
K2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRh
dGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFs
dWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkKIHsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjgsMTAgKzEw
MjgsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsT3B0aW1pCiAgICAgICAg
IGlmICghaXNDb3B5T25Xcml0ZShiYXNlT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2Ny
aXB0LmlzSW50MzIoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9j
aywgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywgUHV0
S2luZDo6Tm90RGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTEwOTgsMTAgKzEwOTYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5
VmFsCiAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAm
JiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
IGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHByb2ZpbGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI0MTIsMTAgKzI0MDgsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0QnlWCiAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJz
Y3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAg
ICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgcmVwYXRjaEFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdU
MywgcmVnVDIpOwogCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV92YWwoY29uc3QgSQogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwogICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsK
QEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RyCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdU
MSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCBy
ZWdUNSwgcmVnVDQpOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAg
ICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmls
ZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02MjIsMTEg
KzYyMiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICBl
bWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChiYXNlLCByZWdUMSk7CiAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RB
cnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhf
dD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0
aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMik7Ci0gICAgICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5s
aW5rKHRoaXMpOwotICAgIH0KKyAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIHJlZ1QyKTsK
IAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKApAQCAtNzk3LDcgKzc5NCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5
LCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBy
ZWdUMSk7CkBAIC04MjAsNyArODE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3Zh
bChjb25zdCBJbgogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SW5CeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAg
QXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgSklU
SW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7
CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSklU
OjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QKICAgICBpZiAoaGFzQW55U2xvd0Nhc2Vz
KGl0ZXIpKSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
Ci0gICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDM5LDcgKzQzOSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJv
cGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9
IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwpAQCAtNDgyLDcg
KzQ4Miw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEkKICAgICAg
ICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2Rl
Lm1fZWNtYU1vZGU7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgICAgICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
OworICAgICAgICBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAgICAgfTsKIAog
ICAgIGlmIChpc0RpcmVjdCkKQEAgLTExMDgsMTEgKzExMDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1CiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAgICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAg
IEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRy
ZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsKLSAgICAgICAgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
YXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgcmVnVDEpOwotICAgICAgICBub3RBcnJheUxl
bmd0aE1vZGUubGluayh0aGlzKTsKLSAgICB9CisgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBlbWl0
QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
LCByZWdUMSk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDApOwogCkBAIC0xNTExLDcgKzE1MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwo
Y29uc3QgSW5zdHJ1CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBB
cnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJy
YXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3BlcnR5LCByZWdUMSk7CkBAIC0xNTM4LDcgKzE1MzUsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGU7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5C
eVZhbEluZGV4KytdOwogCkBAIC0yMzkzLDcgKzIzOTAsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgfQogCiAgICAgc3RhdGljX2Fzc2VydChWYWx1ZVBy
b2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAxKTsKLSAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNz
KG1ldGFkYXRhR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MobWV0YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwg
bV9wcm9maWxlKSksIHJlZ1QxKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBW
YWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwogCiAgICAgcmV0KCk7CiAKQEAg
LTI0NDksNyArMjQ0Nyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SkkKICAgICBDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAg
SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2so
dm0pOwogCi0gICAgaml0LnN0b3JlNjQocmVnVDAsIEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSkpOworICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZT
RVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsK
KyAgICBqaXQuc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
ciwgVmFsdWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KCkpKTsKICAgICBqaXQubW92ZShU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpOwogCiAjaWYgQ1BVKFg4Nl82NCkKQEAgLTI4NTQsNyArMjg1Myw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5kZXgg
PSBieXRlY29kZS5tX2luZGV4OwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU5hbWUgPSBi
eXRlY29kZS5tX3Byb3BlcnR5TmFtZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9
IGJ5dGVjb2RlLm1fZW51bWVyYXRvcjsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0
YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRh
dGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSBKU1ZhbHVlIGdl
dE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBM
TElOVF9QUk9GSUxFX1ZBTFVFKHZhbHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKTsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS0+
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZh
bHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0
LCBjYWxsVGFyZ2V0VGFnKSBcCkBAIC03NjEsNyArNzYxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUoSgogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9j
ayk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlk
TW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5
SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODI0LDggKzgyNCw5IEBA
IHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QKICAgICB9IGVsc2UgaWYg
KCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRl
bnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIG1ldGFkYXRhLnNl
dEFycmF5TGVuZ3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKSk7CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5o
ZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAgIH0KQEAgLTg0MSw3ICs4NDIsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUu
bV9iYXNlKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMs
IGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpOwogICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwogfQogCkBAIC04NTcsMTAgKzg1OCwxMCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgp
KQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRl
cmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0gICAgSlNW
YWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9i
amVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNv
ZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOwogICAgIG5leHRSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxl
LT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQo
KTsKIH0KIApAQCAtODc3LDEwICs4NzgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2l0ZXJhdG9yXwogICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKICAgICAg
ICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0
ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVz
LT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOwogICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5t
X2RvbmVQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAg
ICBMTElOVF9FTkQoKTsKIH0KIApAQCAtODk0LDEwICs4OTUsMTAgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yXwogICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgaXRl
cmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKIAotICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0
ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1v
ZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBj
LCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFt
ZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLCBudWxscHRyKTsKICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OwotICAg
IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5tX3ZhbHVlUHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKQEAgLTEwMjQsNyArMTAyNSw3IEBAIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0KICAgICBpZiAoc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAg
ICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgaWYgKGlzSlNT
dHJpbmcoYmFzZVZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmNhbkdldEluZGV4KGkpKSB7CkBAIC0xNDI5LDcgKzE0MzAsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaW5fYnlfdmFsCiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wSW5CeVZhbD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21t
b25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX2Jhc2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9w
ZXJ0eSksICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX3Byb3BlcnR5KSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20JKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2
Nyw3IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGcKICAgICAgICAg
bW92ZSBwYXlsb2FkLCB0MAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0NSwgdDEsIHQwKQorICAgICAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDAsIHQyKQogICAg
ICAgICBnZXQobV9kc3QsIHQyKQogICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQogICAgICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KQEAgLTg1
LDcgKzg1LDcgQEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydQogICAg
IHN0b3JlaSByMSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0Miwg
dDMpCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIs
IHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgcjEsIHIwLCB0MykKICAgICBkaXNwYXRjaCgpCiAKIGVuZApAQCAtNjc3LDkgKzY3Nywx
MCBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9uCiAgICAgICAgIGVu
ZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwg
bWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKLSAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21ldGFkYXRhXQot
ICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFt
ZSUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkLCBzY3Jh
dGNoKQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJVtt
ZXRhZGF0YV0sIHNjcmF0Y2gKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0
cyArIFRhZ09mZnNldFtzY3JhdGNoXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6
Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbc2NyYXRjaF0KIGVuZAogCiAKQEAgLTE0MzcsNyAr
MTQzOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKICAgICBs
b2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQyCiAgICAgYmlu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAg
ICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE0NTgsMzcgKzE0
NTksMjkgQEAgbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGJp
bmVxIHQwLCB0MSwgc2xvd0xhYmVsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0MSkKLSAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEs
IHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6Ci0gICAgYmJu
ZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlM
ZW5ndGgKKyAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5v
cEdldEJ5SWRVbnNldAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAg
ICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJv
dG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCiAgICAgYmluZXEgdDMsIHQxLCBzbG93TGFi
ZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFt
ZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVk
U2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQw
LCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIHQyLCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKLS5vcEdldEJ5SWRBcnJh
eUxlbmd0aDoKLSAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aCwgLm9wR2V0QnlJZFVuc2V0Ci0gICAgbW92ZSB0MywgdDAKLSAgICBhcnJheVByb2ZpbGUoJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKLSAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFi
ZWwKLSAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCi0gICAgbG9hZHAg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAKLSAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAot
ICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBJbnQzMlRhZywgdDApCi0gICAgcmV0dXJuKEludDMyVGFn
LCB0MCkKKyMgSXQgY2FuJ3QgYmUgYXJyYXkgbGVuZ3RoIHNpbmNlIHdlIGRvbid0IHVzZSB0aGlz
IGZvciBhcmJpdHJhcnkgZ2V0X2J5X2lkJ3MgdGhhdCBjb3VsZAorIyBhY2Nlc3MgImxlbmd0aCIu
IFdlIG9ubHkgdXNlIGl0IGZvciBpdGVyYXRvciBvcGNvZGVzIHdoaWNoIGFyZW4ndCB1c2luZyAi
bGVuZ3RoIiBhcyBhbgorIyBpZGVudGlmaWVyLgogICAgIAogLm9wR2V0QnlJZFVuc2V0OgogICAg
IGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlE
W3QyXSwgdDAKICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBVbmRlZmluZWRUYWcsIDApCisgICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5l
ZFRhZywgMCwgdDMpCiAgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKIAogZW5kCkBAIC0xNTA2
LDIwICsxNDk5LDIwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIK
ICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cK
ICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRN
b2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQo
dDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0
NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgog
ICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRC
eUlkVW5zZXQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2Vs
bFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIG1vdmUgdDMsIHQyCi0gICAgYXJyYXlQcm9m
aWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5h
cnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0
YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MSkKICAgICBidGl6IHQyLCBJc0Fy
cmF5LCAub3BHZXRCeUlkU2xvdwogICAgIGJ0aXogdDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BH
ZXRCeUlkU2xvdwogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAg
bG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDAsIHQz
KQogICAgIHJldHVybihJbnQzMlRhZywgdDApCiAKIC5vcEdldEJ5SWRVbnNldDoKQEAgLTE1Mjcs
NyArMTUyMCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKICAg
ICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3Ry
dWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUs
IHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgYmluZXEgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5lZFRhZywgMCwgdDMpCiAgICAgcmV0dXJu
KFVuZGVmaW5lZFRhZywgMCkKIAogLm9wR2V0QnlJZERlZmF1bHQ6CkBAIC0xNTM2LDcgKzE1Mjks
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAgICAgbG9hZGlz
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9m
ZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQw
LCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykK
ICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoKQEAgLTE1NDYsNyArMTUzOSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKIC5vc3JSZXR1cm5Q
b2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBz
aXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9m
aWxlLCB0MiwgcjEsIHIwLCB0MykKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNjI0
LDcgKzE2MTcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAg
ICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQogICAgICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5
bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXls
b2FkLCBzY3JhdGNoKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2MzMsNyAr
MTYyNiw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICAg
ICAgZmQyaWkgcmVzdWx0LCBzY3JhdGNoMiwgc2NyYXRjaDMKICAgICAgICAgc3RvcmVpIHNjcmF0
Y2gzLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KICAgICAgICAgc3RvcmVpIHNjcmF0Y2gy
LCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIs
IHNjcmF0Y2gxKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2NDEsNyArMTYz
NCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBnZXQo
bV9iYXNlLCB0MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Miwg
Q2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5
UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEp
CisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwg
dDIsIHQ1LCB0MSwgdDMpCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xv
dykKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MwpAQCAtMTY3OCw3ICsx
NjcxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9wR2V0
QnlWYWxOb3RFbXB0eToKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSwgdDMpCiAgICAgZGlzcGF0Y2goKQogCiAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTY5MSw3ICsxNjg0LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9zclJldHVyblBvaW50OgogICAgIGdl
dHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1l
dGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0
MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCBy
MSwgcjAsIHQzKQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkKQEAgLTE3MTIsNyArMTcwNSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwKICAgICBiaW5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CiAKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVl
UHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAg
ICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTc3NCw3ICsx
NzY3LDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogCiAgICAg
ICAgIC5vdXRPZkJvdW5kczoKICAgICAgICAgICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDBdLCAub3BQ
dXRCeVZhbE91dE9mQm91bmRzCi0gICAgICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICAg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQy
CisgICAgICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3Qy
XQogICAgICAgICAgICAgYWRkaSAxLCB0MywgdDIKICAgICAgICAgICAgIHN0b3JlaSB0MiwgLXNp
emVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVu
Z3RoW3QwXQogICAgICAgICAgICAgam1wIC5zdG9yZVJlc3VsdApAQCAtMTc4NSw3ICsxNzc5LDcg
QEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBnZXQo
bV9iYXNlLCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwg
dDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCi0g
ICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLCB0MiwgdDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAgICAgIGdldChtX3By
b3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwg
dDAsIEludDMyVGFnLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBsb2FkcCBKU09iamVj
dDo6bV9idXR0ZXJmbHlbdDFdLCB0MApAQCAtMTgzOSw3ICsxODMzLDggQEAgbWFjcm8gcHV0QnlW
YWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAu
b3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5OgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAg
ICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwg
dDEKKyAgICAgICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0K
ICAgICAgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAg
ICAgICAgIGJpYiB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1
Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJl
c3VsdAogICAgICAgICBhZGRpIDEsIHQzLCB0MQpAQCAtMTg0Nyw3ICsxODQyLDggQEAgbWFjcm8g
cHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlW
YWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoK
LSAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2Zp
bGUubV9vdXRPZkJvdW5kc1t0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2Zp
bGU6Om1fb3V0T2ZCb3VuZHNbdDFdCiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNo
KCkKQEAgLTI1MTUsNyArMjUxMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE8KICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJv
bVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0
dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjUyNCw3ICsyNTIwLDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAgICBsb2FkcCBUYWdPZmZzZXRbdDBd
LCB0MQogICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwgdDIKICAgICAgICAgdGR6Q2hl
Y2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBt
X3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29w
ZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAg
ICBlbmQKIApAQCAtMjUzMiw3ICsyNTI4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
ZnJvbV9zY29wZSwgTwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1f
b3BlcmFuZFt0NV0sIHQzCiAgICAgICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3Zhcmlh
YmxlcyArIFRhZ09mZnNldFt0MCwgdDMsIDhdLCB0MQogICAgICAgICBsb2FkcCBKU0xleGljYWxF
bnZpcm9ubWVudF92YXJpYWJsZXMgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MywgOF0sIHQyCi0gICAg
ICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0
MiwgdDMpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNjgsMTUgKzY4LDE2IEBAIG1h
Y3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGcKICAgICBmbihtYWNybyAodmFs
dWUpCiAgICAgICAgIG1vdmUgdmFsdWUsIHQzCiAgICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAg
ICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0MSwgdDMpCisgICAg
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzLCB0MikKICAg
ICAgICAgZ2V0KG1fZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAg
ICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1
ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRh
ZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRh
ZGF0YSwgdmFsdWUsIHNjcmF0Y2gpCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolcHJvZmlsZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAorICAgIHN0b3JlcSB2YWx1ZSwgVmFs
dWVQcm9maWxlOjptX2J1Y2tldHNbc2NyYXRjaF0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNh
bGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4K
QEAgLTg3LDcgKzg4LDcgQEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3Ry
dQogICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAg
ICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1
Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgdDIsIHIwLCB0MykKICAgICBkaXNwYXRjaCgpCiBlbmQKIApAQCAtMTUwOSw3ICsxNTEw
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LAogICAgIGJpbmVx
IHQwLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6
Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJv
ZmlsZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmls
ZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpA
QCAtMTUxOCw3ICsxNTE5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGly
ZWN0LAogZW5kKQogCiAjIFRoZSBiYXNlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0MwotbWFjcm8g
cGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1
ZVByb2ZpbGVOYW1lLCBzbG93TGFiZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBw
ZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVl
UHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwgZG9BcnJheVBy
b2ZpbGUpCiAgICAgbWV0YWRhdGEodDIsIHQxKQogICAgIGxvYWRiICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLm1vZGVbdDJdLCB0MQogCkBAIC0xNTI5LDcgKzE1
MzAsNyBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgYmlu
ZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0
dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2FkOgpAQCAtMTU0MCwyNyArMTU0MSwyNyBAQCBt
YWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgbG9hZGlzICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2Fj
aGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVt
b2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4o
dDApCiAKIC5vcEdldEJ5SWRBcnJheUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdl
dEJ5SWRNb2RlOjpBcnJheUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0MywgdDAK
LSAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRh
TmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBkb0Fy
cmF5UHJvZmlsZSh0MCwgdDIsIHQ1LCB0MSkKICAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFi
ZWwKICAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENh
Z2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVy
VGFnLCB0MAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxv
YWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3Qy
XSwgdDAKICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmlu
ZWQsIHQxKQogICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKIAogZW5kCkBAIC0xNTY4LDcgKzE1
NjksMTAgQEAgZW5kCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlk
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQo
bV9iYXNlLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMs
IC5vcEdldEJ5SWRTbG93KQotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9t
b2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCBy
ZXR1cm4pCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0
YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwKKyAg
ICAgICAgbWFjcm8gKGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9h
cnJheVByb2ZpbGUsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpCisgICAgICAgIGVuZCkKIAogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQpAQCAtMTU3Nyw3ICsxNTgxLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QgogLm9zclJldHVyblBvaW50OgogICAg
IGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAg
bWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwg
dDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwLCB0
MykKICAgICByZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE2OTgsNyArMTcwMiw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAg
c3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZGlzcGF0
Y2goKQogICAgIGVuZAogCkBAIC0xNzE5LDcgKzE3MjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6
ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCiAKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5
UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEp
CisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwg
dDIsIHQ1LCB0MSwgdDMpCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTc1
OSw3ICsxNzYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAog
CiAub3BHZXRCeVZhbERvbmU6CiAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MykKICAgICBkaXNwYXRjaCgpCiAKIC5v
cEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNzcyLDcgKzE3NzYsNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAg
Z2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAg
bWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjAs
IHQzKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTc5NCw3ICsxNzk4LDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLAogCiAgICAgbG9hZGkgT3BHZXRQcml2
YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5h
bWUsIG1fcHJvZmlsZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1l
LCBtX3Byb2ZpbGUsIHQyLCB0MCwgdDMpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRQcml2YXRl
TmFtZVNsb3c6CkBAIC0xODk3LDcgKzE5MDEsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5h
bWUsIG9wY29kZVN0cnVjCiAKICAgICAgICAgLm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlh
ZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhz
LnZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0
b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3Rv
cmVUb0hvbGVbdDVdCisgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDIKKyAgICAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2Zp
bGU6Om1fbWF5U3RvcmVUb0hvbGVbdDJdCiAgICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgogICAg
ICAgICAgICAgc3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdCiAgICAgICAgICAgICBqbXAgLnN0b3JlUmVz
dWx0CkBAIC0xOTA3LDcgKzE5MTIsNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0
MSwgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBtb3ZlIHQxLCB0MgogICAgICAgICBtZXRhZGF0
YSh0NSwgdDApCi0gICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAg
ICAgIGdldChtX3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUlu
dDMyKHNpemUsIHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMK
QEAgLTE5NjIsNyArMTk2Nyw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWMKICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VF
bXB0eToKLSAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBB
cnJheVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hvbGVbdDFdCiAgICAgICAgIGFkZGkgMSwgQXJyYXlT
dG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQogICAgICAgICBiaWIgdDMsIC1zaXplb2Yg
SW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0
MF0sIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKICAgICAgICAgYWRkaSAxLCB0
MywgdDEKQEAgLTE5NzAsNyArMTk3Niw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWMKICAgICAgICAgam1wIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1
bHQKIAogICAgIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3VuZHNbdDVdCisg
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVd
LCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX291dE9mQm91bmRzW3QxXQog
ICAgIC5vcFB1dEJ5VmFsU2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCkBAIC0yNjYyLDcgKzI2NjksNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgbWFjcm8gZ2V0
UHJvcGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3Bl
cmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQw
LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1
LCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1
LCB0MiwgdDMpCiAgICAgICAgIHJldHVybih0MikKICAgICBlbmQKIApAQCAtMjY3MCwxNCArMjY3
NywxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAg
IGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAg
ICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKKyAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCiAg
ICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIoKQog
ICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQx
CiAgICAgICAgIGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhd
LCB0MAotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQwLCB0MykKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCkBAIC0zMDAyLDcgKzMwMDks
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wCiAKICAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX2l0ZXJhdG9yLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ss
IC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3cKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBl
cihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRv
ck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNw
YXRjaCkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0
YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNp
emUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkgZW5k
KQogCiAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93OgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCkBAIC0zMDYxLDcgKzMwNjgs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wCiAKICAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5n
ZXREb25lU2xvdwotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2Rv
bmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRh
dGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIo
T3BJdGVyYXRvck5leHQsIG1fZG9uZU1vZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERv
bmVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSwgbWFjcm8o
YSwgYiwgYywgZCkgZW5kKQogCiAuZ2V0RG9uZVNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKQEAgLTMwODYsNyArMzA5Myw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3AKICAgICAjIFJlbG9hZCB0
aGUgbmV4dCByZXN1bHQgdG1wIHNpbmNlIHRoZSBnZXRfYnlfaWQgYWJvdmUgbWF5IGhhdmUgY2xv
YmJlcmVkIHQzLgogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQogICAgICMgV2Ug
ZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJl
IHNpbmNlIHdlIHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3JlLgotICAgIHBlcmZvcm1H
ZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVl
UHJvZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNw
YXRjaCkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1v
ZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRh
LCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLmdldFZh
bHVlU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0
X2dldF92YWx1ZSkKQEAgLTMxNTksNyArMzE2Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
ZW51bWVyYXRvcl9nZXRfYnkKICAgICBsb2FkcSBjb25zdGV4cHIgKChvZmZzZXRJbkJ1dHRlcmZs
eShmaXJzdE91dE9mTGluZU9mZnNldCkpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSlbdDAsIHQy
LCA4XSwgdDIKIAogLmRvbmU6Ci0gICAgdmFsdWVQcm9maWxlKE9wRW51bWVyYXRvckdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlW
YWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MykKICAgICByZXR1cm4odDIpCiAKIC5nZXRTbG93UGF0
aDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NCwx
MSArMTI4NCwxMiBAQCBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOCiAg
ICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tjZnJdLCBQQwogZW5kCiAKLW1hY3JvIGFycmF5UHJvZmls
ZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQorbWFjcm8g
YXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0
Y2gxLCBzY3JhdGNoMikKICAgICBjb25zdCBjZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQogICAg
IGNvbnN0IGluZGV4aW5nVHlwZSA9IGNlbGxBbmRJbmRleGluZ1R5cGUgCi0gICAgbG9hZGkgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzY3JhdGNoCi0gICAgc3RvcmVpIHNjcmF0Y2gsIG9m
ZnNldCArIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW21ldGFkYXRhXQorICAg
IGxvYWRwIG9mZnNldFttZXRhZGF0YV0sIHNjcmF0Y2gyCisgICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW2NlbGxdLCBzY3JhdGNoMQorICAgIHN0b3JlaSBzY3JhdGNoMSwgQXJyYXlQcm9m
aWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbc2NyYXRjaDJdCiAgICAgbG9hZGIgSlNDZWxsOjpt
X2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKQEAgLTE2MTIs
OCArMTYxMyw4IEBAIG1hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1MKICAg
ICBhZGRwIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3aGF0
IGhhcyB0aGUgcGVlcGhvbGUKICAgICBhc3NlcnQobWFjcm8gKG9rKSBicGd0ZXEgdDAsIDAsIG9r
IGVuZCkKICAgICBidHB6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQotICAgIGxvYWRwIENvZGVC
bG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsg
UmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDFdLCB0MwotICAgIGJ0cHogdDMsIC5hcmd1bWVudFBy
b2ZpbGVEb25lICMgV2hlbiB3ZSBjYW4ndCBKSVQsIHdlIGRvbid0IGFsbG9jYXRlIGFueSBhcmd1
bWVudCB2YWx1ZSBwcm9maWxlcy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2Rl
W3QxXSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV92YWx1ZVByb2ZpbGVzICsg
Rml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QzXSwgdDMK
ICAgICBtdWxwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBz
dHJlbmd0aCByZWR1Y3Rpb24hCiAgICAgbHNoaWZ0cCAzLCB0MCAjIG9mZnNldCBvZiBsYXN0IEpT
VmFsdWUgYXJndW1lbnRzIG9uIHRoZSBzdGFjay4KICAgICBhZGRwIHQyLCB0MyAjIHBvaW50ZXIg
dG8gZW5kIG9mIFZhbHVlUHJvZmlsZSBhcnJheSBpbiBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1
ZVByb2ZpbGVzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGVTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4MjE4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVu
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw3IEBAIEJ5dGVjb2RlU2VxdWVuY2U6
OkJ5dGVjb2RlU2VxdWVuY2UoQ29kZUIKICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAg
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZBcmd1bWVu
dFZhbHVlUHJvZmlsZXMoKTsgKytpKSB7Ci0gICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uID0gY29k
ZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChpKS5icmllZkRlc2NyaXB0aW9uKGxvY2tl
cik7CisgICAgICAgIENTdHJpbmcgZGVzY3JpcHRpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmls
ZUZvckFyZ3VtZW50KGkpLmJyaWVmRGVzY3JpcHRpb24oKTsKICAgICAgICAgaWYgKCFkZXNjcmlw
dGlvbi5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBvdXQucmVzZXQo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9m
aWxlKQogCiAjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7
IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1
Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jaykucHJvZmlsZU5hbWUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dB
cml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRocm93U2NvcGUmIHNjb3BlKQpAQCAtODg3LDcgKzg4Nyw3IEBAIEFMV0FZU19JTkxJTkUgU2xv
d1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG8KICAgICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5dGVj
b2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKICAgICBpZiAoYXV0byBhcnJheUl0
ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3IpKSB7
CiAgICAgICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0sIGl0
ZXJhYmxlKSkgewotICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2JzZXJ2
ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRh
Lm1faXRlcmFibGVQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlE
KCkpOwogCiAgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2Rl
cyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9k
ZTo6RmFzdEFycmF5OwogICAgICAgICAgICAgYXV0byYgaW5kZXhTbG90ID0gYXJyYXlJdGVyYXRv
ci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCk7CkBAIC05OTMs
NyArOTkzLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAg
IEFTU0VSVCghYmFzZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIEpTT2JqZWN0KiBi
YXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJh
c2UtPnN0cnVjdHVyZUlEKCkpOworICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZl
U3RydWN0dXJlSUQoYmFzZS0+c3RydWN0dXJlSUQoKSk7CiAKICAgICBKU1N0cmluZyogbmFtZSA9
IGVudW1lcmF0b3ItPmNvbXB1dGVOZXh0KGdsb2JhbE9iamVjdCwgYmFzZSwgaW5kZXgsIG1vZGUp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAgIHN3aXRjaCAobW9kZSkgewogICAg
IGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZTogewogICAgICAgICBp
ZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3Ry
dWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgUkVU
VVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaW5kZXgpKSk7CiAgICAgfQogICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
OjpPd25TdHJ1Y3R1cmVNb2RlOiB7CkBAIC0xMDM0LDcgKzEwMzQsNyBAQCBKU0NfREVGSU5FX0NP
TU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAKICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcjo6R2VuZXJpY01vZGU6IHsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAm
JiBtb2RlICE9IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZSkKLSAg
ICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9h
cnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZUlEKCkpOwogICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5dGVj
b2RlLm1fcHJvcGVydHlOYW1lKS5qc1ZhbHVlKCkpOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOwpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19Q
QVRIKHNsb3dfcGF0aF9lbgogICAgIH0KIAogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmlu
ZyhHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eU5hbWUpLmpzVmFsdWUoKSk7Ci0gICAgUkVUVVJOKGpz
Qm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1
ZSwgc3RyaW5nLCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CisgICAgUkVUVVJOKGpzQm9v
bGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwg
c3RyaW5nLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKIH0KIAogSlNDX0RFRklORV9DT01N
T05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpCg==
</data>
<flag name="commit-queue"
          id="461037"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437790</attachid>
            <date>2021-09-09 14:51:59 -0700</date>
            <delta_ts>2021-09-09 14:54:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>110092</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAyMS0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMgZm9yIG5vbi1jYWxsIG9wY29kZXMgaW50bworICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jay4gVGhpcyB3YXksIHRoZSBkYXRhIGlzIHNoYXJlZCBiZXR3
ZWVuIHRoZSBsaW5rZWQgQ29kZUJsb2NrcworICAgICAgICBvZiB0aGUgc2FtZSBVbmxpbmtlZENv
ZGVCbG9jay4gVGhlIHByb2ZpbGluZyBiZXQgaGVyZSBpcyB0aGF0IHdoZW4gdGhlIHNhbWUgY29k
ZQorICAgICAgICBydW5zIGluIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QsIGl0IGxhcmdlbHkg
cnVucyBpbiB0aGUgc2FtZSB3YXkuIFdlJ3ZlIG1hZGUKKyAgICAgICAgdGhpcyBzYW1lIGJldCBp
biBvdGhlciB3YXlzIHdpdGggb3VyIHByb2ZpbGluZywgYW5kIGl0IGxhcmdlbHkgbWFrZXMgc2Vu
c2UKKyAgICAgICAgdG8gZG8gZm9yIFZhbHVlUHJvZmlsZSBhbmQgQXJyYXlQcm9maWxlIHNpbmNl
IHRoZXkgYm90aCBob2xkIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaW5kZXBlbmRlbnQgZGF0YS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBpdCBzbyB3ZSBubyBsb25n
ZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAgICBwcm9jZXNzaW5nIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxvdyBtdWx0aXBsZSBjb21waWxl
cgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNoIG90aGVyIHdoZW4gdXBkYXRp
bmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAgICAgSXQgbWF5IGVuZCB1cCB3
aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1dCBpdCB3b24ndCBjb3JydXB0
IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIG1lYXN1cmVkIGFzIGEgMSUgc3BlZWR1
cCBvbiBTcGVlZG9tZXRlcjIuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbik6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZWRBcnJheU1vZGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjptYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6Om1heVN0b3JlVG9Ib2xlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjpvdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNo
ZWNrcG9pbnQuaDoKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVycyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2
ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGljdGlv
bnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rp
b25Gb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNo
QXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJyYXlMZW5ndGhNb2RlKToKKyAg
ICAgICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChK
U0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyOjpwcmVkaWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxl
Lmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZW5zdXJlVmFsdWVQcm9maWxlcyk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjplbnN1cmVBcnJheVByb2ZpbGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxl
QmFzZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6
OmNsZWFyQnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmJyaWVmRGVz
Y3JpcHRpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RC
dWNrZXQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2Rl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBj
b25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRv
TWFrZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U6
OnJ1bik6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNv
ZGUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0
QnlWYWxPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OmRpcmVjdFB1dEJ5VmFsT3B0aW1pemUpOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfZnJvbV9zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZvcm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5
dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorCiAyMDIxLTA5
LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYWRkIGZpbGVzIHRvIHhjb2RlcHJvagpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsMTggKzExOCwyMyBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFt
JiBvdXQsIEFyCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkJpZ1VpbnQ2NEFycmF5TW9kZSIp
OwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQg
QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlSUQpCisgICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAg
IFN0cnVjdHVyZUlEIGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOworICAgIGlmICghaWQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9sYXN0U2VlblN0cnVj
dHVyZUlEKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ss
IGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOworICAgIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQordm9pZCBBcnJheVByb2Zp
bGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkKIHsKKyAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxk
IGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuIFRoYXQgd29uJ3QgbGVhZAor
ICAgIC8vIHRvIGFueSBmb3JtIG9mIGNvcnJ1cHRpb24sIGJ1dCBjb3VsZCBjYXVzZSB1cyB0byBn
byBkb3duICFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKKyAgICAvLyBwYXRoIHNpbXVsdGFu
ZW91c2x5LgogICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZXNGcm9tU3RydWN0
dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0
UnVuUHJ1bmluZwpAQCAtMTYzLDEzICsxNjgsMTMgQEAgdm9pZCBBcnJheVByb2ZpbGU6Om9ic2Vy
dmVJbmRleGVkUmVhZChWTQogICAgIH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVm
RGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
Y29kZUJsb2NrKQorQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
Y29kZUJsb2NrKTsKLSAgICByZXR1cm4gYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhs
b2NrZXIpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2spOworICAgIHJl
dHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CiB9CiAKLUNTdHJpbmcgQXJy
YXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhv
dXRVcGRhdGluZygpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJp
bnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDIyICsyMTcsMjIg
QEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOyB9CiAgICAgdm9p
ZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7Ci0gICAgdm9p
ZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgdm9pZCBjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlN
b2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVk
QXJyYXlNb2RlczsgfQotICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzOyB9CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7
IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9Ib2xlKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KLSAgICBib29sIG91dE9m
Qm91bmRzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZC
b3VuZHM7IH0KKyAgICBib29sIG1heVN0b3JlVG9Ib2xlKCkgY29uc3QgeyByZXR1cm4gbV9tYXlT
dG9yZVRvSG9sZTsgfQorICAgIGJvb2wgb3V0T2ZCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX291
dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOyB9CiAKLSAgICBD
U3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJs
b2NrKik7Ci0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihDb2Rl
QmxvY2sqKTsKKyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsK
ICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIG9wIDpnZXRf
YXJndW1lbnQsCiAgICAgICAgIGluZGV4OiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmFyZ3VtZW50X2NvdW50LApAQCAtMTgzLDcgKzE4Myw3IEBA
IG9wIDp0b190aGlzLAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhY2hlZFN0cnVjdHVyZUlE
OiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMsCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6Y2hlY2tfdGR6LApAQCAtMzA5LDcgKzMwOSw3IEBAIG9wX2dyb3Vw
IDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcCA6Yml0bm90LApAQCAt
MzE4LDcgKzMxOCw3IEBAIG9wIDpiaXRub3QsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZQorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3BfZ3JvdXAg
OlVuYXJ5T3AsCkBAIC0zNjMsNyArMzYzLDcgQEAgb3AgOnRvX29iamVjdCwKICAgICAgICAgbWVz
c2FnZTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0K
IAogb3BfZ3JvdXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLApAQCAtMzc2LDcgKzM3Niw3IEBAIG9w
X2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5hcnlPcCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpu
ZWdhdGUsCkBAIC00NDUsNyArNDQ1LDcgQEAgb3AgOmluX2J5X3ZhbCwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmluX2J5X2lkLApAQCAtNDc3LDcgKzQ3Nyw4IEBAIG9wIDpn
ZXRfYnlfaWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OCw3
ICs0ODksNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpn
ZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTQ5OSw3ICs1MDAsNyBAQCBvcCA6Z2V0X2J5X3ZhbF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBA
IC01MDksNyArNTEwLDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgfQpAQCAtNTIwLDcgKzUyMSw3
IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0cnlfZ2V0
X2J5X2lkLApAQCAtNTMwLDcgKzUzMSw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAg
IH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3MSw4ICs1NzIsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6
IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAgLTU4Myw3ICs1ODQsNyBAQCBvcCA6Z2V0X3By
aXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLApAQCAtNjMyLDcgKzYzMyw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Miw3ICs2
NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAog
b3AgOmRlbF9ieV92YWwsCkBAIC04NDIsNyArODQzLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOnRhaWxfY2FsbCwKQEAgLTg1NCw3ICs4NTUsNyBAQCBvcCA6
dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBA
IC04NjcsNyArODY4LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAg
fQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgwLDggKzg4MSw4IEBAIG9wIDpjYWxsX3ZhcmFy
Z3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
YXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZCwKQEAgLTkwMSw4ICs5MDIsOCBAQCBvcCA6
dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRt
cHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIyLDgg
KzkyMyw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3QsCkBAIC05MzUsNyArOTM2LDcgQEAgb3Ag
OmNvbnN0cnVjdCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y29uc3RydWN0X3Zh
cmFyZ3MsCkBAIC05NDgsOCArOTQ5LDggQEAgb3AgOmNvbnN0cnVjdF92YXJhcmdzLAogICAgICAg
ICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5j
bHVkaW5nVGhpczogdW5zaWduZWQKQEAgLTEwMjgsNyArMTAyOSw3IEBAIG9wIDpnZXRfZnJvbV9z
Y29wZSwKICAgICAgICAgICAgIHN0cnVjdHVyZTogV3JpdGVCYXJyaWVyQmFzZVtTdHJ1Y3R1cmVd
LAogICAgICAgICB9LAogICAgICAgICBvcGVyYW5kOiB1aW50cHRyX3QsICNvZmZzZXQgNgotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsICMgb2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosICMgb2Zmc2V0IDcKICAgICB9LAogICAgIG1ldGFkYXRhX2luaXRpYWxp
emVyczogewogICAgICAgICBnZXRQdXRJbmZvOiA6Z2V0UHV0SW5mbywKQEAgLTEwNjUsNyArMTA2
Niw3IEBAIG9wIDpnZXRfZnJvbV9hcmd1bWVudHMsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1
bWVudHMsCkBAIC0xMTczLDcgKzExNzQsNyBAQCBvcCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAg
ICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9y
TWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg3LDggKzExODgsOCBAQCBvcCA6ZW51bWVyYXRvcl9n
ZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAg
IGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjAyLDcg
KzEyMDMsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9ieV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAg
ICB9CiAKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG9wIDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6
IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyNDksMTEgKzEyNTAsMTEgQEAgb3Ag
Oml0ZXJhdG9yX29wZW4sCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBpdGVyYXRp
b25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAgICBpdGVyYWJsZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgaXRl
cmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
LSAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbmV4dFByb2ZpbGU6
IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3lt
Ym9sQ2FsbDogbmlsLApAQCAtMTI3MiwxMyArMTI3MywxMyBAQCBvcCA6aXRlcmF0b3JfbmV4dCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxl
LAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBjYWxs
TGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
Ci0gICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBuZXh0UmVz
dWx0OiBKU1ZhbHVlLApAQCAtMTMyMiw3ICsxMzIzLDcgQEAgb3AgOmdldF9pbnRlcm5hbF9maWVs
ZCwKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDpwdXRfaW50ZXJuYWxfZmllbGQsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5k
c0ZvckNoZWNrcG9pbnQuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDIwICs1NywyMCBAQCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwo
Qnl0ZWNvCiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3Rl
eHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRv
ck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7Ci0g
ICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9u
ZXh0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0
dXJuIG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JP
cGVuOjpnZXROZXh0OiByZXR1cm4gbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBl
bHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0
b3JfbmV4dCkgewogICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBj
YXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRS
ZXN1bHRQcm9maWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1
cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBjYXNl
IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3Vs
dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBt
ZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZTogcmV0dXJuIG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAg
ICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRh
Lm1fcHJvZmlsZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYgKzM3NCwxMCBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhWTSYgdm0sIFN0cnVjdHVyZSogCiBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKKyAgICAvLyBX
ZSBjYW4ndCBmaW5hbGl6ZSBhIEdDIHdoaWxlIGluIGhlcmUgc2luY2Ugd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8KKyAgICAvLyBtYWtlIHN1cmUgb3VyIFZhbHVlUHJvZmlsZXMgYWxsIHBvaW50IHRv
IHByb3BlciBsb2NhdGlvbnMuCisgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5pc0RlZmVycmVk
KCkpOyAKKwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBmaW5pc2hDcmVhdGlv
bkNvbW1vbih2bSk7CiAKQEAgLTQzNSw3ICs0MzksOCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5j
ZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICBhdXRvIGxpbmtf
cHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29k
ZSovLCBhdXRvJiAvKm1ldGFkYXRhKi8pIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsmXShj
b25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiBtZXRh
ZGF0YSkgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFZhbHVlUHJvZmls
ZSosIGRlY2x0eXBlKG1ldGFkYXRhLm1fcHJvZmlsZSk+KTsKICAgICAgICAgbV9udW1iZXJPZk5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgIH07CiAKQEAgLTQ5OSw5ICs1MDQsOSBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAKICAgICAgICAgTElOSyhP
cEdldEJ5SWQsIHByb2ZpbGUpCiAKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0LCBwcm9m
aWxlKQotICAgICAgICBMSU5LKE9wRW51bWVyYXRvckluQnlWYWwsIHByb2ZpbGUpCi0gICAgICAg
IExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIHByb2ZpbGUpCisgICAgICAgIExJTkso
T3BFbnVtZXJhdG9yTmV4dCkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JJbkJ5VmFsKQorICAg
ICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093blByb3BlcnR5KQogICAgICAgICBMSU5LKE9wRW51
bWVyYXRvckdldEJ5VmFsLCBwcm9maWxlKQogCiAgICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxl
KQpAQCAtNzYxLDYgKzc2Niw5NiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksKIAorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7CisgICAgICAg
IGlmIChtX21ldGFkYXRhKSB7CisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgICAgIHNp
emUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOworICAgICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAg
ICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVuPigpICog
MzsKKyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
TmV4dD4oKSAqIDM7CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVChzaXplKTsK
KworICAgICAgICBhdXRvJiB2YWx1ZVByb2ZpbGVzID0gdW5saW5rZWRDb2RlQmxvY2stPmVuc3Vy
ZVZhbHVlUHJvZmlsZXMoc2l6ZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkKKyAgICAgICAgICAgIHZhbHVl
UHJvZmlsZXNbaV0uY2xlYXJCdWNrZXRzKCk7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUgZmlyc3QgbnVtYmVyT2ZBcmd1
bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMK
KworICAgICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBhc3NpZ24gPSBb
Jl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlID0g
JnZhbHVlUHJvZmlsZXNbaW5kZXgrK107CisKKyAgICAgICAgICAgICAgICAvLyBUaGVzZSBWYWx1
ZVByb2ZpbGVzIGNvdWxkIGJlIHN0YWxlLCBzaW5jZSBVbmxpbmtlZENvZGVCbG9jayBkb2Vzbid0
IHZpc2l0CisgICAgICAgICAgICAgICAgLy8gdGhlbSBpbiBhbnkgd2F5LiBTbyB0aGV5IGNvdWxk
IGJlIGx5aW5nIGFyb3VuZCBmcm9tIHdoZW4gc29tZSBwcmlvciBDb2RlQmxvY2sKKyAgICAgICAg
ICAgICAgICAvLyB3YXMgZXhlY3V0aW5nLCBidXQgZGllZCBhZnRlciBzdG9yaW5nIHRvIHRoZW0u
IFNvIHRvIGJlIGNvbnNlcnZhdGl2ZSwgd2UgY2xlYXIKKyAgICAgICAgICAgICAgICAvLyBhbnkg
dW5wcm9jZXNzZWQgdmFsdWVzIG5vdy4KKyAgICAgICAgICAgICAgICBwcm9maWxlLT5jbGVhckJ1
Y2tldHMoKTsKKyAgICAgICAgICAgIH07CisKKyNkZWZpbmUgVklTSVQoX19vcCkgXAorICAgICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFz
c2lnbihtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICAgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyAKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwor
ICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAg
ICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fZG9u
ZVByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX3ZhbHVlUHJvZmls
ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZGV4ID09IHNpemUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9
IDA7CisKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAor
ICAgICAgICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7CisgICAg
ICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENPVU5UKQorI3VuZGVm
IENPVU5UCisgICAgICAgICAgICBzaXplICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8T3BJdGVy
YXRvck5leHQ+KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAg
ICAgYXV0byYgYXJyYXlQcm9maWxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5lbnN1cmVBcnJheVBy
b2ZpbGVzKHNpemUpOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworCisgICAgICAg
ICAgICBhdXRvIGFzc2lnbiA9IFsmXSAoQXJyYXlQcm9maWxlKiYgcHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgIHByb2ZpbGUgPSAmYXJyYXlQcm9maWxlc1tpbmRleCsrXTsKKworICAgICAgICAg
ICAgICAgIC8vIFNlZSBjb21tZW50IGFib3ZlIGFib3V0IHdoeSB3ZSBjbGVhciBvdXQgc3RhbGUg
dmFsdWVzIGluIHZhbHVlIHByb2ZpbGVzLgorICAgICAgICAgICAgICAgIC8vIFdlIGRvIHRoZSBh
bmFsb2dvdXMgdGhpbmcgaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAg
IHByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGUgb3Bjb2Rl
cyBpbiBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFLgorICAgICAgICAgICAgLy8g
V2UgZG9uJ3QgeWV0IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGluZ3Mgd2l0aCBMTEludCBD
YWxsTGlua0luZm9zLgorI2RlZmluZSBWSVNJVChfX29wKSBcCisgICAgICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUKQorI3VuZGVmIFZJU0lUCisKKyAgICAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAg
ICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHNpemUpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhD
b250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAtOTI4LDggKzEwMjMsNiBAQCB2
b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJuYXRpdmUoVk0mIHZtLCBDCiB2b2lkIENvZGVCbG9jazo6
c2V0TnVtUGFyYW1ldGVycyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBhcmFtZXRl
cnMgPSBuZXdWYWx1ZTsKLQotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4ZWRWZWN0
b3I8VmFsdWVQcm9maWxlPihPcHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7CiB9CiAK
IENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCkBAIC0y
NzczLDcgKzI4NjYsNyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxl
CiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI2RlZmluZSBDQVNFMShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOworICAgICAgICByZXR1
cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOwog
CiAjZGVmaW5lIENBU0UyKE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKQEAgLTI3ODUs
MTMgKzI4NzgsNiBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlCiAj
dW5kZWYgQ0FTRTEKICN1bmRlZiBDQVNFMgogCi0gICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29kZUlE
OiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigp
OwotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAg
ICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJy
YXlMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFy
cmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yOTAwLDE5ICsyOTg2LDE5IEBAIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICAgICAgICAgIG51bVNh
bXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBw
cm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0Lgog
ICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7CiAgICAgICAg
IGlmIChpc0FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocHJv
ZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAg
ICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7Ci0gICAgICAg
IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfSk7CiAKICAgICBpZiAobV9tZXRh
ZGF0YSkgewogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsmXShhdXRvJiBt
ZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fYnVmZmVyKSB7CiAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2goWyZdKFZhbHVlUHJvZmlsZUFuZFZp
cnR1YWxSZWdpc3RlciYgcHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKQEAgLTI5MzEsMTAgKzMwMTcsOCBAQCB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxBcnJheVByZWRpY3Rpb25zKCkKIHsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7Ci0gICAgCiAgICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQcm9maWxlJiBw
cm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
ciwgdGhpcyk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMp
OwogICAgIH0pOwogICAgIAogICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShB
cnJheUFsbG9jYXRpb25Qcm9maWxlJiBwcm9maWxlKSB7CkBAIC0zMTY0LDcgKzMyNDgsNyBAQCBW
YWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9mCiAKICNkZWZpbmUgQ0FTRShP
cCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rp
b24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIGlu
c3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX3Byb2ZpbGU7CiAKICAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDQVNFKQogCkBAIC0zMTgxLDEwICsz
MjY1LDEwIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2YKICAgICB9
CiB9CiAKLVNwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZv
ckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCkKK1NwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9m
aWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KQogewogICAgIGlmIChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSA9IHRyeUdldFZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiB2YWx1
ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICByZXR1
cm4gdmFsdWVQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICByZXR1cm4g
U3BlY05vbmU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDc0LDE5ICs0NzQsMTYgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzLnNpemUoKSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9udW1QYXJhbWV0ZXJzKSB8fCAhT3B0aW9uczo6dXNlSklUKCkp
OwotICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpOworICAgICAg
ICByZXR1cm4gbnVtUGFyYW1ldGVycygpOwogICAgIH0KIAogICAgIFZhbHVlUHJvZmlsZSYgdmFs
dWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7IC8vIFRoaXMgaXMgb25seSBjYWxsZWQgZnJv
bSB0aGUgdmFyaW91cyBKSVQgY29tcGlsZXJzIG9yIHBsYWNlcyB0aGF0IGZpcnN0IGNoZWNrIG51
bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzIGJlZm9yZSBjYWxsaW5nIHRoaXMuCi0gICAgICAg
IFZhbHVlUHJvZmlsZSYgcmVzdWx0ID0gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXNbYXJndW1lbnRJ
bmRleF07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB1bmxpbmtlZENv
ZGVCbG9jaygpLT52YWx1ZVByb2ZpbGUoYXJndW1lbnRJbmRleCk7CiAgICAgfQogCiAgICAgVmFs
dWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwot
ICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZXgpOworICAgIFNwZWN1bGF0
ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoVmFsdWVQ
cm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwpAQCAtMTAxNSw3ICsxMDEy
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxvY2tzLgogICAgIENvbXByZXNz
ZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxl
czsKICNlbmRpZgotICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVl
UHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJf
bXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjIgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29ucwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNk
ZWZpbmUgVklTSVQoX19vcCkgXAotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7
CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyBmdW5jKCptZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKIAogI3VuZGVmIFZJU0lUCiAKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeyAKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZh
bHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNl
KTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAg
ICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmls
ZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7CisgICAgICAg
ICAgICBmdW5jKCptZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOwogICAgICAgICB9KTsK
ICAgICB9ICAgCiAKQEAgLTY0LDEzICs2NCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5j
KQogewogICAgIGlmIChtX21ldGFkYXRhKSB7Ci0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAobWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAg
ICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KICNkZWZpbmUgVklTSVQxKF9fb3ApIFwKLSAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyht
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19v
cD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7
IH0pOwogCiAjZGVmaW5lIFZJU0lUMihfX29wKSBcCiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxf
X29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8u
bV9hcnJheVByb2ZpbGUpOyB9KTsKQEAgLTgyLDcgKzc3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZv
ckVhY2hBcnJheVByb2ZpbGUoY29ucwogI3VuZGVmIFZJU0lUMgogCiAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAgICAgZnVu
YygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwogICAgICAgICB9KTsKICAgICB9CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0
YS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZE1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCw2IEBAIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdl
dEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIpOwogCi1zdHJ1Y3QgR2V0QnlJZE1vZGVNZXRh
ZGF0YUFycmF5TGVuZ3RoIHsKLSAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotfTsKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIp
OwotCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCB7CiAgICAgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwpAQCAtOTAs
NyArODUsNiBAQCB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB9OwogICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRh
dGFVbnNldCB1bnNldE1vZGU7Ci0gICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9h
ZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YSkgPT0g
MTYpOwpAQCAtMTEzLDcgKzEwNyw2IEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAg
ICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2Rl
OwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5zZXRNb2RlOwotICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5ndGhNb2RlOwogICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiAgICAgfTsKICAgICBH
ZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTM3LDcgKzEzMCw2IEBAIGlubGluZSB2b2lkIEdldEJ5SWRN
b2RlTWV0YWRhdGE6OnNldFVuc2UKIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNl
dEFycmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aDsKLSAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGU7
CiAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcu
CiAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyAr
MzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigpIHsgfQog
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3NlZExhenlP
cGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQordm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKQotICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogfQogCiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
OjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIExhenlP
cGVyYW5kVmFsdQogfQogCiBTcGVjdWxhdGVkVHlwZSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBh
cnNlcjo6cHJlZGljdGlvbigKLSAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKKyAgICBjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5
KSBjb25zdAogewogICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0SWZQ
cmVzZW50KGtleSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm4gU3BlY05vbmU7
CiAgICAgCi0gICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOworICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDYgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBu
dW1FbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGF1dG8qIHN0YXJ0ID0gYml0d2lzZV9jYXN0PHR5
cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldChPcDo6b3Bjb2RlSUQpKTsKKyAgICAgICAgYXV0byog
ZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldEltcGwoT3A6Om9w
Y29kZUlEICsgMSkpOworICAgICAgICByZXR1cm4gZW5kIC0gc3RhcnQ7CisgICAgfQorCiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKICAgICB2b2lkIHJlZigpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2
ICsxMzksNyBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4CiAgICAg
bWFjcm8oT3BFbnVtZXJhdG9yR2V0QnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JJbkJ5
VmFsKSBcCiAgICAgbWFjcm8oT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNy
byhPcEdldEJ5SWQpIFwKIAogI2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9BTExP
Q0FUSU9OX1BST0ZJTEUobWFjcm8pIFwKICAgICBtYWNybyhPcE5ld0FycmF5KSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeXRlY29k
ZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJERkdFeGl0
UHJvZmlsZS5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1
ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRNZXRh
ZGF0YVRhYmxlLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KQEAgLTQxOSw2ICs0MjEsOCBAQCBwcml2YXRlOgogICAgIEZpeGVkVmVjdG9yPElkZW50
aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25v
d24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247CisgICAgRml4
ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJvZmlsZXM7IC8vIFRoZSBmaXJzdCBudW1Q
YXJhbWV0ZXJzKCkgYXJlIGFyZ3VtZW50IHByb2ZpbGVzLgorICAgIEZpeGVkVmVjdG9yPEFycmF5
UHJvZmlsZT4gbV9hcnJheVByb2ZpbGVzOwogICAgIHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZl
Y3RvciA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4+OwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAg
RnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHByczsKQEAgLTQ1Niw2ICs0NjAs
MjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVj
dGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCisgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUo
dW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlUHJvZmlsZXNbaV07Cisg
ICAgfQorCisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiYgZW5zdXJlVmFsdWVQcm9maWxl
cyh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7Cisg
ICAgICAgIGlmICghbV92YWx1ZVByb2ZpbGVzLnNpemUoKSkKKyAgICAgICAgICAgIG1fdmFsdWVQ
cm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fdmFsdWVQcm9maWxlcy5zaXplKCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVy
biBtX3ZhbHVlUHJvZmlsZXM7CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxl
PiYgZW5zdXJlQXJyYXlQcm9maWxlcyh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlmICghbV9hcnJheVByb2ZpbGVzLnNpemUoKSkK
KyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9IEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4o
c2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXJyYXlQcm9maWxlcy5zaXplKCkgPT0g
c2l6ZSk7CisgICAgICAgIHJldHVybiBtX2FycmF5UHJvZmlsZXM7CisgICAgfQorCiBwcml2YXRl
OgogICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDExIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICBWYWx1ZVByb2Zp
bGVCYXNlKCkKICAgICB7CisgICAgICAgIGNsZWFyQnVja2V0cygpOworICAgIH0KKworICAgIHZv
aWQgY2xlYXJCdWNrZXRzKCkKKyAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKQogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQpAQCAtOTIsOSArOTcsOSBAQCBzdHJ1
Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ci0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYg
bG9ja2VyKQorICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbigpCiAgICAgewotICAgICAgICBj
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAg
ICAgICAgIG91dC5wcmludCgicHJlZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0
aW9uKSk7CkBAIC0xMTgsMTAgKzEyMywxMCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gVXBkYXRlcyB0aGUgcHJlZGljdGlvbiBhbmQg
cmV0dXJucyB0aGUgbmV3IG9uZS4gTmV2ZXIgY2FsbCB0aGlzIGZyb20gYW55IHRocmVhZAotICAg
IC8vIHRoYXQgaXNuJ3QgZXhlY3V0aW5nIHRoZSBjb2RlLgotICAgIFNwZWN1bGF0ZWRUeXBlIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKQorICAgIFNw
ZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpCiAgICAgeworICAgICAgICAv
LyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1l
IHRpbWUuCisgICAgICAgIC8vIFRoZSBpbXBvcnQgcGFydCBpcyB0aGF0IHdlIGRvbid0IGVuZCB1
cCBjb3JydXB0aW5nIGFueSB2YWx1ZXMuCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVl
KQpAQCAtMTU2LDYgKzE2MSw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXQKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdp
dGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmFsdWVQcm9maWxlLCBt
X2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lz
dGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICsz
NiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLUFycmF5TW9kZSBB
cnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
QXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2Fm
ZSkKK0FycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChBcnJheVByb2ZpbGUqIHByb2Zp
bGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1ha2VTYWZlKQogewogICAgIEFycmF5OjpD
bGFzcyBub25BcnJheTsKLSAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVzKGxvY2tlcikpCisgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cygpKQogICAgICAgICBub25BcnJheSA9IEFycmF5OjpPcmlnaW5hbE5vbkFycmF5OwogICAgIGVs
c2UKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6Tm9uQXJyYXk7CkBAIC02MywyNyArNjMsMjcg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb252ZXJ0cyA9IEFycmF5OjpBc0lzOwogCi0gICAgICAgIHJldHVybiBB
cnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwg
aXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgIH07CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRB
cnJheU1vZGVzKGxvY2tlcik7CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZCA9IHByb2ZpbGUtPm9i
c2VydmVkQXJyYXlNb2RlcygpOwogICAgIHN3aXRjaCAob2JzZXJ2ZWQpIHsKICAgICBjYXNlIDA6
CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVucHJvZmlsZWQpOwogICAgIGNhc2Ug
YXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheSk6Ci0gICAgICAgIGlmIChh
Y3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMobG9ja2VyKSkKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXBy
b2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdBcmd1bWVudHMsIG5vbkFycmF5LCBBcnJheTo6
T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pOwotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53
aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9u
QXJyYXksIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNh
ZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0
aFVuZGVjaWRlZCk6CiAgICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlKQogICAgICAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdBcmd1bWVudHMsIEFycmF5
OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFy
cmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2Vy
LCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVu
ZGVjaWRlZCwgQXJyYXk6OkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICAgICAgCiAgICAgY2Fz
ZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoVW5kZWNpZGVkKToKLSAgICAgICAgaWYgKGFj
dGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJv
ZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgQXJyYXk6OlBvc3NpYmx5QXJy
YXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbiku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFj
dGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAg
ICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEludDMy
KToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoSW50
MzIpOgpAQCAtMTEzLDUwICsxMTMsNTAgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2Vy
dmVkKGNvbnN0IAogICAgICAgICByZXR1cm4gaGFuZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpD
b250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rp
b24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAg
ICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5
U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNs
b3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93
UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2Zp
bGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJ
cywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBj
YXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5
OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24p
LndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNl
IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6
UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5
U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQ
cm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5n
VHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAg
IGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0
b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0
b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAg
cmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3Np
Ymx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICBjYXNlIEludDhBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpJbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJv
ZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2Ug
SW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJy
YXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MzJB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUs
IG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRB
cnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4
Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUo
cHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgVWludDE2QXJyYXlNb2RlOgotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVp
bnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJy
YXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMy
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9hdDMyQXJyYXlNb2RlOgotICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQzMkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2
NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0NjRB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUs
IG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0ludDY0QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJ
cywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdV
aW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2
NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2Vy
LCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUo
cHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkgdHlwZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9u
LXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhl
IG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29udmVydCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlm
IChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJBWV9NT0RFUykKLSAgICAgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53
aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZl
ZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxl
LT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKLSAgICAgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMpLndpdGhTcGVjdWxhdGlv
bkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICBpZiAoKG9i
c2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheSkpICYmIHBy
b2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQorICAgICAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucykud2l0aFNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgICAgICAKICAgICAgICAgQXJyYXk6
OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3M7CkBAIC0xODMsNyAr
MTgzLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBhcnJheUNsYXNzID0gQXJyYXk6OlBvc3NpYmx5QXJyYXk7CiAg
ICAgICAgIAotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5
OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252
ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICB9CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24g
MjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZSh3b3JkKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2Jz
ZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFj
dGlvbiwgYm9vbCBtYWtlU2FmZSk7CisgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
QXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CiAgICAgCiAgICAg
QXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24p
IGNvbnN0CiAgICAgewpAQCAtMTkwLDEzICsxOTAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24oKSwgY29udmVyc2lv
bigpLCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRp
b25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9m
aWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3aXRoU3Bl
Y3VsYXRpb25Gcm9tUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUp
IGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsK
IAogICAgICAgICBpZiAobWFrZVNhZmUpCiAgICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJy
YXk6Ok91dE9mQm91bmRzOwotICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9s
ZShsb2NrZXIpKQorICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9sZSgpKQog
ICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CkBAIC0yMDQsMTMg
KzIwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB3aXRoU3BlY3VsYXRpb24obXlTcGVj
dWxhdGlvbik7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1h
a2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3aXRoUHJvZmlsZShBcnJheVByb2ZpbGUqIHBy
b2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6Q2xhc3Mg
bXlBcnJheUNsYXNzOwogCiAgICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewotICAgICAgICAgICAg
aWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVm
aXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewotICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJy
YXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpOworICAgICAgICAg
ICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpICYmIGJlbmVmaXRz
RnJvbU9yaWdpbmFsQXJyYXkoKSkgeworICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlN
b2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwogICAgICAgICAgICAgICAgIGlm
IChoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1vZGVzKSAmJiAhaGFzU2VlbldyaXRhYmxl
QXJyYXkoYXJyYXlNb2RlcykpCiAgICAgICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFy
cmF5OjpPcmlnaW5hbENvcHlPbldyaXRlQXJyYXk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
IWhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5TW9kZXMpICYmIGhhc1NlZW5Xcml0YWJsZUFy
cmF5KGFycmF5TW9kZXMpKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7CiAgICAgICAgIAot
ICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRp
b25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJu
IHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUo
cHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH0KICAgICAKICAgICBBcnJheU1vZGUgd2l0aFR5cGUo
QXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODk1LDExICs4OTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1
ZVByb2ZpbGVQcmVkaWN0aW9uRnJvbUZvckNvZGVCbG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAg
ICAgICAgewotICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbjsKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1
ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29k
ZUluZGV4KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGF1dG8qIGZ1
enplckFnZW50ID0gbV92bS0+ZnV6emVyQWdlbnQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShmdXp6ZXJBZ2VudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQ
cmVkaWN0aW9uKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNv
ZGVUb3A7CkBAIC05ODMsMTAgKzk3OSw5IEBAIHByaXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0
QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYgcHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAg
ICAgewotICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOwot
ICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmlsZS5vdXRPZkJvdW5kcyhsb2NrZXIpOwotICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0
aW9uLCBtYWtlU2FmZSk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jayk7CisgICAgICAgIGJvb2wgbWFrZVNh
ZmUgPSBwcm9maWxlLm91dE9mQm91bmRzKCk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZy
b21PYnNlcnZlZCgmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CiAgICAgfQogCiAgICAgTm9k
ZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIwNTgsOSArMjA1Myw4IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmkKICAgICAgICAgICAgIC8vIGFyZ3VtZW50cyBy
ZWNlaXZlZCBpbnNpZGUgdGhlIGNhbGxlZS4gQnV0IHRoYXQgcHJvYmFibHkgd29uJ3QgbWF0dGVy
IGZvciBtb3N0CiAgICAgICAgICAgICAvLyBjYWxscy4KICAgICAgICAgICAgIGlmIChjb2RlQmxv
Y2sgJiYgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9maWxlJiBwcm9maWxl
ID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChhcmd1bWVudCk7Ci0gICAgICAg
ICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5j
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChudW1TZXRBcmd1bWVu
dHMgPj0gbWFuZGF0b3J5TWluaW11bSA/IFNldEFyZ3VtZW50TWF5YmUgOiBTZXRBcmd1bWVudERl
ZmluaXRlbHksIE9wSW5mbyh2YXJpYWJsZSkpOwpAQCAtNjMwNSw3ICs2Mjk5LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgaWYgKHNob3Vs
ZENvbXBpbGVBc0dldEJ5SWQpCiAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChieXRlY29k
ZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwg
Z2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQsIG5leHRPcGNvZGVJbmRleCgpKTsKICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBn
ZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwg
QXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRB
cnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFy
cmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgY29uc2lkZXIg
bWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2UgaXQgb25seSB1c2VzIHRocmVlIGNoaWxkCiAg
ICAgICAgICAgICAgICAgLy8gc2xvdHMuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5MgpAQCAtNzA3NSwxMSArNzA2OSw5IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIEhh
c2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1lbnRzOwogCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0KICAgICAgICAgICAgICAgICBidWZm
ZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXImIHByb2ZpbGUp
IHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5t
X29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
ID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRp
Y3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTc0MzEsNyArNzQyMyw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsK
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9jayA9IGFsbG9jYXRlVW50YXJn
ZXRhYmxlQmxvY2soKTsKIAotICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBn
ZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAg
ICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0
YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAgIGF1dG8g
cHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChCeXRlY29kZUluZGV4KG1f
Y3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6Z2V0VmFsdWUpKTsKIAogICAg
ICAgICAgICAgICAgIHsKQEAgLTgzMjYsNyArODMxOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFj
b21waWxlZEFzSW5CeUlkKSB7Ci0gICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxl
LCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwg
QXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9H
cmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYmFzZSwgcHJvcGVydHkp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2luX2J5X3ZhbCk7
CkBAIC04NDEwLDcgKzg0MDIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9uZXh0OiB7CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JOZXh0Pigp
OwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2Rl
IGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5
OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsK
ICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0KGJ5dGVjb2RlLm1faW5kZXgpOwogICAgICAg
ICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChieXRlY29kZS5tX2VudW1lcmF0b3IpOwpAQCAt
ODQ0Miw3ICs4NDM0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbDogewogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yR2V0QnlW
YWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICBBcnJh
eU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwg
QXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb24gPSBn
ZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKIAogICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODUwNiw3ICs4NDk4LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3Jf
aW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2Rl
IGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6
OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgq
bWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKIAogICAgICAgICAgICAgYWRk
VmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFzZSkpOwogICAgICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lKSk7CkBAIC04NTIxLDcgKzg1MTMsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ug
b3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4o
KTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0
YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJh
eTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jh
c2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5
TmFtZSkpOwpAQCAtODg4MSw3ICs4ODczLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlWYWwoQnl0ZQogICAgIH0KIAogICAgIGlmICghY29tcGlsZWRBc1B1dEJ5SWQpIHsKLSAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3JpdGUpOworICAgICAgICBBcnJh
eU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3JpdGUpOwogCiAgICAgICAgIGFkZFZhckFyZ0No
aWxkKGJhc2UpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI4MjE4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwNDIsOSArNDA0Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcm9m
aWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKSk7CiAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBBcnJheU1vZGUoQXJyYXk6
OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIEFycmF5OjpSZWFkKTsKICAgICAgICAgaWYgKGFycmF5
UHJvZmlsZSkgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxl
ZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJsb2NrKTsKLSAgICAgICAgICAgIGFycmF5TW9k
ZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgYXJyYXlQcm9maWxlLCBBcnJheTo6
UmVhZCwgZmFsc2UpOworICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24ocHJvZmlsZWRCbG9jayk7CisgICAgICAgICAgICBhcnJheU1vZGUgPSBBcnJheU1v
ZGU6OmZyb21PYnNlcnZlZChhcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkLCBmYWxzZSk7CiAgICAg
ICAgICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6VW5wcm9maWxlZCkgewogICAg
ICAgICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJyYXkgb3BlcmF0aW9ucywgaXQgbWFrZXMgc2Vu
c2UgdG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAgICAgICAgICAgIC8vIGFjY2Vzc2VzIGFzIEZv
cmNlRXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRoZXIgdGhhbiB1c2luZwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwx
NiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygp
LT5udW1QYXJhbWV0ZXJzKCkgPj0gMSk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwotICAgICAgICAgICAg
CiAgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhl
IGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KICAgICAgICAgICAgIC8vIG90aGVyIGVu
dHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rp
b25zLgogICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3Vt
ZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKIAogICAgICAgICAgICAgZm9yIChz
aXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVt
UGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUmIHBy
b2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7Ci0g
ICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVk
aWN0KAotICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIpKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCktPnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw3ICszMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4uLik7
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJv
ZmlsZT46OnZhbHVlLCB2b2lkPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1
ZSwgdm9pZD4KICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUo
T3AgYnl0ZWNvZGUpOwogCiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhD
ZWxsKFJlZ2lzdGVySUQgY2VsbEdQUiwgQXJyYXlQcm9maWxlKiwgUmVnaXN0ZXJJRCBzY3JhdGNo
R1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1pbmxpbmUgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUp
LCBWYWx1ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRl
SWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkKK2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmls
ZSo+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9w
Y29kZShPcCBieXRlY29kZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZWdUMCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMjgsMTAgKzEwMjgsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSB2b2lkIHB1dEJ5VmFsT3B0aW1pCiAgICAgICAgIGlmICghaXNDb3B5T25Xcml0ZShiYXNlT2Jq
ZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2NyaXB0LmlzSW50MzIoKSkgewogICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAg
ICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxv
Y2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAg
ICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAgICAg
ICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZh
bHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywgUHV0S2luZDo6Tm90RGlyZWN0LCBlY21hTW9kZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwOTgsMTAgKzEwOTYsOCBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5VmFsCiAgICAgaWYgKCFpc0NvcHlPbldyaXRl
KGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsK
ICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxv
Y2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgIGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAg
ICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29k
ZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHByb2Zp
bGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNv
ZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQ
dXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0MTIsMTAg
KzI0MDgsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlWCiAgICAg
aWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0p
OwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVC
bG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBj
b2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJv
ZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
Y29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcmVwYXRjaEFycmF5R2V0QnlWYWwo
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8p
OwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Zh
bChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUq
IHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNl
LCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogCkBAIC0yNzYsNyArMjc2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSQogICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgICAgICBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhd
OwogICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RyCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5t
X3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywg
cmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwpAQCAtNTA1LDcgKzUw
NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAg
dmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1v
ZGUoYnl0ZWNvZGUpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKKyAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogICAgIH07CiAK
ICAgICBpZiAoaXNEaXJlY3QpCkBAIC02MjIsMTEgKzYyMiw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDAp
OwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKLSAgICBp
ZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5v
dEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBU
cnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3Ro
KSkpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMik7
Ci0gICAgICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMpOwotICAgIH0KKyAgICBpZiAo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpCisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUsIHJlZ1QyKTsKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
Z2VuKApAQCAtNzk3LDcgKzc5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25z
dCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5
UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVBy
b2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2Fk
MihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CkBAIC04MjAsNyArODE3LDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbgogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9p
bkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3Qg
SW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdU
MSk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2Uo
Y29uc3QKICAgICBpZiAoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKSB7CiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBw
cm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgQXJy
YXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5
UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcmVnVDEpOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVl
OwogICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgICAgICBwcm9m
aWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgICAgICBwcm9maWxlID0gbWV0YWRh
dGEubV9hcnJheVByb2ZpbGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTExMDgs
MTEgKzExMDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1CiAg
ICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAg
ICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hv
dWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0g
YnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpB
cnJheUxlbmd0aCkpKTsKLSAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJl
Z1QwLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZSwgcmVnVDEpOwotICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKLSAgICB9
CisgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxk
RW1pdFByb2ZpbGluZygpKQorICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwo
cmVnVDAsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCByZWdUMSk7CiAKICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCkBAIC0xNTExLDcgKzE1MDgsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0
YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRh
dGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJl
Z1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CkBAIC0x
NTM4LDcgKzE1MzUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IElu
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxl
KiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBKSVRJbkJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwogCkBAIC0yMzkzLDcg
KzIzOTAsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAg
fQogCiAgICAgc3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAx
KTsKLSAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBPQkpFQ1RfT0ZGU0VU
T0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MobWV0YWRhdGFH
UFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSksIHJlZ1QxKTsKKyAgICBz
dG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RC
dWNrZXQoKSkpOwogCiAgICAgcmV0KCk7CiAKQEAgLTI0NDksNyArMjQ0Nyw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICBDYWxsIG9wZXJhdGlvbiA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5l
bWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0gICAgaml0LnN0b3JlNjQocmVn
VDAsIEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihN
ZXRhZGF0YSwgbV9wcm9maWxlKSkpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSks
IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBqaXQuc3RvcmU2NChyZWdUMCwgQWRk
cmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgVmFsdWVQcm9maWxlOjpvZmZzZXRPZkZp
cnN0QnVja2V0KCkpKTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVy
VGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogCiAjaWYgQ1BVKFg4Nl82NCkKQEAg
LTI4NTQsNyArMjg1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3Zh
bCgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwogICAgIFZp
cnR1YWxSZWdpc3RlciBwcm9wZXJ0eU5hbWUgPSBieXRlY29kZS5tX3Byb3BlcnR5TmFtZTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9IGJ5dGVjb2RlLm1fZW51bWVyYXRvcjsKLSAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAg
QXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBK
dW1wTGlzdCBkb25lQ2FzZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDcgKzE1Myw3IEBAIGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWwKICAg
ICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9QUk9GSUxFX1ZBTFVFKHZhbHVlKSBk
byB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9i
dWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorICAgICAgICBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCkBAIC03NjEs
NyArNzYxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoSgogICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIHBl
cmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKK3N0
YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRh
JiBtZXRhZGF0YSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtODI0LDggKzgyNCw5IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTElu
dEdldEJ5SUQoY29uc3QKICAgICB9IGVsc2UgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cg
JiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXlQcm9m
aWxlKTsKICAgICAgICAgICAgIG1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOwotICAgICAg
ICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0
dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAgICAgICBhcnJh
eVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
dm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2sp
OwogICAgIH0KQEAgLTg0MSw3ICs4NDIsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKIAotICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJh
c2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBi
YXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGUpOwogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCkBAIC04
NTcsMTAgKzg1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3Jf
CiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBu
b3QgYW4gb2JqZWN0LiJfcykpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRH
ZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5
TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVy
YXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEsIG51
bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIG5leHRSZWdpc3RlciA9
IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fbmV4dFByb2ZpbGUu
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAtODc3LDEwICs4NzgsMTAg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yXwogICAgIGlmICghaXRl
cmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChw
YywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5h
bWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0
ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIGRv
bmVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1f
ZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAg
Ynl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2RvbmVQcm9maWxlLT5tX2J1Y2tldHNbMF0g
PSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAtODk0
LDEwICs4OTUsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yXwog
ICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVj
b2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVy
LmpzVmFsdWUoKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChw
YywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
aXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVl
TW9kZU1ldGFkYXRhLCBudWxscHRyKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAg
ICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
aykubV92YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmlsZS0+bV9idWNr
ZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAK
QEAgLTEwMjQsNyArMTAyNSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlW
YWwoVk0KICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQu
dHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAg
ICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGU7CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgewogICAgICAg
ICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKSB7CkBAIC0xNDI5
LDcgKzE0MzAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fYnlfdmFsCiAg
ICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5CeVZhbD4o
KTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0g
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9i
YWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpLCBnZXRPcGVy
YW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSkpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJ
bkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KSwgbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9o
YXNfcHJpdmF0ZV9uYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI4MjE4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9m
aWxlZChvcGNvZGVTdHJ1Y3QsIGcKICAgICAgICAgbW92ZSBwYXlsb2FkLCB0MAogCiAgICAgICAg
IG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9w
cm9maWxlLCB0NSwgdDEsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBt
X3Byb2ZpbGUsIHQ1LCB0MSwgdDAsIHQyKQogICAgICAgICBnZXQobV9kc3QsIHQyKQogICAgICAg
ICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogICAgICAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KQEAgLTg1LDcgKzg1LDcgQEAgbWFjcm8gZGlzcGF0Y2hB
ZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydQogICAgIHN0b3JlaSByMSwgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgbWV0
YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwLCB0MykKICAgICBkaXNw
YXRjaCgpCiAKIGVuZApAQCAtNjc3LDkgKzY3NywxMCBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkds
b2JhbExleGljYWxFbnZpcm9uCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKLSAg
ICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9i
dWNrZXRzICsgVGFnT2Zmc2V0W21ldGFkYXRhXQotICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNl
dFttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1l
LCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkLCBzY3JhdGNoKQorICAgIGxvYWRwICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJVttZXRhZGF0YV0sIHNjcmF0Y2gKKyAgICBzdG9y
ZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtzY3JhdGNoXQorICAg
IHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRb
c2NyYXRjaF0KIGVuZAogCiAKQEAgLTE0MzcsNyArMTQzOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFk
YXRhOjptX29mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBt
X3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwg
bV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRC
eUlkRGlyZWN0U2xvdzoKQEAgLTE0NTgsMzcgKzE0NTksMjkgQEAgbWFjcm8gcGVyZm9ybUdldEJ5
SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCiAgICAg
bG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1
bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAK
IC5vcEdldEJ5SWRQcm90b0xvYWQ6Ci0gICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9k
ZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKKyAgICBiYm5lcSB0MSwgY29uc3Rl
eHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRVbnNldAogICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0s
IHQzCiAgICAgYmluZXEgdDMsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZz
ZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRh
ZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQzKQogICAgIHJl
dHVybih0MCwgdDEpCiAKLS5vcEdldEJ5SWRBcnJheUxlbmd0aDoKLSAgICBiYm5lcSB0MSwgY29u
c3RleHByIEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0Ci0gICAgbW92
ZSB0MywgdDAKLSAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9k
ZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkK
LSAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKLSAgICBidGl6IHQwLCBJbmRleGluZ1No
YXBlTWFzaywgc2xvd0xhYmVsCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwg
dDAKLSAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUu
bGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAotICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAot
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBJbnQz
MlRhZywgdDApCi0gICAgcmV0dXJuKEludDMyVGFnLCB0MCkKKyMgSXQgY2FuJ3QgYmUgYXJyYXkg
bGVuZ3RoIHNpbmNlIHdlIGRvbid0IHVzZSB0aGlzIGZvciBhcmJpdHJhcnkgZ2V0X2J5X2lkJ3Mg
dGhhdCBjb3VsZAorIyBhY2Nlc3MgImxlbmd0aCIuIFdlIG9ubHkgdXNlIGl0IGZvciBpdGVyYXRv
ciBvcGNvZGVzIHdoaWNoIGFyZW4ndCB1c2luZyAibGVuZ3RoIiBhcyBhbgorIyBpZGVudGlmaWVy
LgogICAgIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFk
YXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKICAgICBiaW5lcSB0MCwgdDEs
IHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIHQyLCBVbmRlZmluZWRUYWcsIDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywgMCwgdDMpCiAgICAgcmV0dXJuKFVu
ZGVmaW5lZFRhZywgMCkKIAogZW5kCkBAIC0xNTA2LDIwICsxNDk5LDIwIEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFk
YXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAg
IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0
MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0
QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQog
ICAgIG1vdmUgdDMsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1f
bW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisg
ICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0Miwg
dDUsIHQwLCB0MSkKICAgICBidGl6IHQyLCBJc0FycmF5LCAub3BHZXRCeUlkU2xvdwogICAgIGJ0
aXogdDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRl
ciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBi
aWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1f
cHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDAsIHQzKQogICAgIHJldHVybihJbnQzMlRhZywgdDAp
CiAKIC5vcEdldEJ5SWRVbnNldDoKQEAgLTE1MjcsNyArMTUyMCw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKICAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJ
ZFNsb3cpCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZp
bmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVu
ZGVmaW5lZFRhZywgMCwgdDMpCiAgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKIAogLm9wR2V0
QnlJZERlZmF1bHQ6CkBAIC0xNTM2LDcgKzE1MjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZCwgT3BHZXRCCiAgICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZFByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BH
ZXRCeUlkU2xvdzoKQEAgLTE1NDYsNyArMTUzOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X2lkLCBPcEdldEIKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JF
eGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykK
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCisgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwLCB0MykKICAgICBy
ZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNjI0LDcgKzE2MTcsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkK
ICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQogICAg
ICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhd
Ci0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRh
ZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJv
ZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkLCBzY3JhdGNoKQogICAgICAgICBkaXNw
YXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2MzMsNyArMTYyNiw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICAgICAgZmQyaWkgcmVzdWx0LCBzY3JhdGNoMiwg
c2NyYXRjaDMKICAgICAgICAgc3RvcmVpIHNjcmF0Y2gzLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNo
MSwgOF0KICAgICAgICAgc3RvcmVpIHNjcmF0Y2gyLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRj
aDEsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBz
Y3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIsIHNjcmF0Y2gxKQogICAgICAgICBkaXNwYXRj
aCgpCiAgICAgZW5kCiAKQEAgLTE2NDEsNyArMTYzNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBnZXQobV9iYXNlLCB0MikKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xv
dykKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0
YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlW
YWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSwgdDMpCiAgICAgZ2V0KG1f
cHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQz
LCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKICAgICBsb2FkcCBKU09iamVjdDo6bV9i
dXR0ZXJmbHlbdDBdLCB0MwpAQCAtMTY3OCw3ICsxNjcxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9wR2V0QnlWYWxOb3RFbXB0eToKICAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0
MiwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0
MSwgdDMpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpA
QCAtMTY5MSw3ICsxNjg0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2lu
dChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQzKQogICAgIHJldHVybihyMSwg
cjApCiAKIGVuZCkKQEAgLTE3MTIsNyArMTcwNSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X3ByaXZhdGVfbmFtZSwKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0
MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CiAKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBt
X3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUs
IG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0
UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTc3NCw3ICsxNzY3LDggQEAgbWFjcm8gcHV0QnlWYWxPcChv
cGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogCiAgICAgICAgIC5vdXRPZkJvdW5kczoKICAgICAgICAg
ICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUu
bGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRCeVZhbE91dE9mQm91bmRzCi0gICAgICAg
ICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5t
X21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQyCisgICAgICAgICAgICBzdG9yZWIgMSwgQXJy
YXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQogICAgICAgICAgICAgYWRkaSAxLCB0Mywg
dDIKICAgICAgICAgICAgIHN0b3JlaSB0MiwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4
aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXQogICAgICAgICAgICAgam1wIC5z
dG9yZVJlc3VsdApAQCAtMTc4NSw3ICsxNzc5LDcgQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBnZXQobV9iYXNlLCB0MCkKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZh
bFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCi0gICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwKQorICAgICAgICBh
cnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIs
IHQ1LCB0MCwgdDMpCiAgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIEludDMyVGFnLCB0MywgLm9wUHV0QnlW
YWxTbG93KQogICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MApAQCAt
MTgzOSw3ICsxODMzLDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
YwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5
OgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJv
ZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAgc3RvcmViIDEsIEFycmF5
UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0KICAgICAgICAgYWRkaSAxLCBBcnJheVN0b3Jh
Z2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJpYiB0MywgLXNpemVvZiBJbmRl
eGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwg
Lm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAgICAgICBhZGRpIDEsIHQzLCB0
MQpAQCAtMTg0Nyw3ICsxODQyLDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAog
CiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoKLSAgICAgICAgc3RvcmViIDEsICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRPZkJvdW5kc1t0NV0KKyAgICAg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQx
CisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0T2ZCb3VuZHNbdDFdCiAgICAg
Lm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8l
b3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKQEAgLTI1MTUsNyArMjUxMSw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAgICBtYWNybyBnZXRQcm9w
ZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5k
W3Q1XSwgdDMKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQx
LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1
LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxl
LCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAt
MjUyNCw3ICsyNTIwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwg
TwogICAgICAgICBsb2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQYXlsb2Fk
T2Zmc2V0W3QwXSwgdDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCisgICAg
ICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyLCB0
MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjUzMiw3ICsyNTI4LDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAgICBsb2Fk
cCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQzCiAgICAgICAgIGxv
YWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFRhZ09mZnNldFt0MCwgdDMsIDhd
LCB0MQogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBQYXls
b2FkT2Zmc2V0W3QwLCB0MywgOF0sIHQyCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21T
Y29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRG
cm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MiwgdDMpCiAgICAgICAgIHJldHVybih0MSwg
dDIpCiAgICAgZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsMTUgKzY4LDE2IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNv
ZGVTdHJ1Y3QsIGcKICAgICBmbihtYWNybyAodmFsdWUpCiAgICAgICAgIG1vdmUgdmFsdWUsIHQz
CiAgICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0
cnVjdCwgbV9wcm9maWxlLCB0MSwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIG1fcHJvZmlsZSwgdDEsIHQzLCB0MikKICAgICAgICAgZ2V0KG1fZHN0LCB0MSkKICAgICAg
ICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkK
IGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0
YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolcHJvZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUsIHNjcmF0Y2gpCisgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlW21ldGFkYXRhXSwg
c2NyYXRjaAorICAgIHN0b3JlcSB2YWx1ZSwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHNbc2NyYXRj
aF0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcg
aW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KQEAgLTg3LDcgKzg4LDcgQEAgbWFjcm8gZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydQogICAgIGdldChzaXplLCBvcGNvZGVTdHJ1
Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0K
ICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjApCisgICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwLCB0MykKICAgICBkaXNw
YXRjaCgpCiBlbmQKIApAQCAtMTUwOSw3ICsxNTEwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfaWRfZGlyZWN0LAogICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNs
b3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQx
CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQwKQorICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4o
dDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTUxOCw3ICsxNTE5LDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LAogZW5kKQogCiAjIFRoZSBiYXNlIG9i
amVjdCBpcyBleHBlY3RlZCBpbiB0MwotbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2Rl
U3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93TGFiZWwsIHNp
emUsIG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVT
dHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6
ZSwgbWV0YWRhdGEsIHJldHVybiwgZG9BcnJheVByb2ZpbGUpCiAgICAgbWV0YWRhdGEodDIsIHQx
KQogICAgIGxvYWRiICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUl
Lm1vZGVbdDJdLCB0MQogCkBAIC0xNTI5LDcgKzE1MzAsNyBAQCBtYWNybyBwZXJmb3JtR2V0QnlJ
REhlbHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBs
b2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVs
dE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9M
b2FkOgpAQCAtMTU0MCwyNyArMTU0MSwyNyBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihv
cGNvZGVTdHJ1Y3QsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVN
ZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRN
b2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQo
dDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRBcnJheUxlbmd0
aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCwgLm9w
R2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0MywgdDAKLSAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5
UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBkb0FycmF5UHJvZmlsZSh0MCwgdDIsIHQ1LCB0MSkK
ICAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKICAgICBidGl6IHQwLCBJbmRleGluZ1No
YXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0
ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQw
LCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVyVGFnLCB0MAotICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0
MCkKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRh
TmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKICAgICBiaW5lcSB0MCwgdDEsIHNs
b3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmluZWQsIHQxKQogICAgIHJldHVybihWYWx1ZVVu
ZGVmaW5lZCkKIAogZW5kCkBAIC0xNTY4LDcgKzE1NjksMTAgQEAgZW5kCiBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV9iYXNlLCB0MCkKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQotICAgIHBlcmZv
cm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9w
R2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgcGVyZm9ybUdldEJ5SURI
ZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xv
dywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwKKyAgICAgICAgbWFjcm8gKGNlbGxBbmRJbmRleGlu
Z1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgICAgICAgICBhcnJheVBy
b2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIGNlbGxBbmRJbmRleGlu
Z1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgICAgIGVuZCkKIAogLm9w
R2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lk
KQpAQCAtMTU3Nyw3ICsxNTgxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQs
IE9wR2V0QgogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Q
b2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwLCB0MykKICAgICByZXR1cm4ocjApCiAKIGVuZCkK
QEAgLTE2OTgsNyArMTcwMiw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwg
T3BHZXQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAg
IGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRj
aCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJl
c3VsdCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJl
c3VsdCwgc2NyYXRjaCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0xNzE5LDcg
KzE3MjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cp
CiAKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0
YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlW
YWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSwgdDMpCiAKICAgICBnZXQo
bV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQz
LCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTc1OSw3ICsxNzYzLDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogCiAub3BHZXRCeVZhbERvbmU6CiAgICAgc3Rv
cmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9m
aWxlLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUs
IHQyLCB0MykKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6
CkBAIC0xNzcyLDcgKzE3NzYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBv
aW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjAsIHQzKQogICAgIHJldHVybihyMCkKIAogZW5k
KQpAQCAtMTc5NCw3ICsxNzk4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0
ZV9uYW1lLAogCiAgICAgbG9hZGkgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0
W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDIsIHQwKQorICAg
IHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQyLCB0MCwgdDMpCiAg
ICAgcmV0dXJuKHQwKQogCiAub3BHZXRQcml2YXRlTmFtZVNsb3c6CkBAIC0xODk3LDcgKzE5MDEs
OCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAKICAgICAgICAg
Lm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5
VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVbdDVdCisgICAgICAgICAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDIKKyAg
ICAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hvbGVbdDJdCiAg
ICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgogICAgICAgICAgICAgc3RvcmVpIHQyLCAtc2l6ZW9m
IEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhb
dDBdCiAgICAgICAgICAgICBqbXAgLnN0b3JlUmVzdWx0CkBAIC0xOTA3LDcgKzE5MTIsNyBAQCBt
YWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MSwgLm9wUHV0QnlWYWxTbG93KQogICAgICAg
ICBtb3ZlIHQxLCB0MgogICAgICAgICBtZXRhZGF0YSh0NSwgdDApCi0gICAgICAgIGFycmF5UHJv
ZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQw
KQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MCkKICAg
ICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQwLCB0MywgLm9wUHV0QnlW
YWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKQEAgLTE5NjIsNyArMTk2Nyw4IEBAIG1hY3Jv
IHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgZGlzcGF0Y2goKQog
CiAgICAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eToKLSAgICAgICAgc3RvcmViIDEsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0
NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hv
bGVbdDFdCiAgICAgICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9y
W3QwXQogICAgICAgICBiaWIgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdl
U3RvcmVSZXN1bHQKICAgICAgICAgYWRkaSAxLCB0MywgdDEKQEAgLTE5NzAsNyArMTk3Niw4IEBA
IG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgam1wIC5v
cFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKIAogICAgIC5vcFB1dEJ5VmFsT3V0T2ZC
b3VuZHM6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJy
YXlQcm9maWxlLm1fb3V0T2ZCb3VuZHNbdDVdCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJy
YXlQcm9maWxlOjptX291dE9mQm91bmRzW3QxXQogICAgIC5vcFB1dEJ5VmFsU2xvdzoKICAgICAg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBk
aXNwYXRjaCgpCkBAIC0yNjYyLDcgKzI2NjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9mcm9tX3Njb3BlLCBPCiAgICAgbWFjcm8gZ2V0UHJvcGVydHkoKQogICAgICAgICBsb2FkcCBP
cEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRQ
cm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDMpCiAgICAgICAgIHJldHVybih0
MikKICAgICBlbmQKIApAQCAtMjY3MCwxNCArMjY3NywxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRh
ZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAgICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAg
dGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNj
b3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNj
b3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQK
IAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29w
ZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRxIEpTTGV4aWNhbEVu
dmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdLCB0MAotICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MykKICAgICAgICAgcmV0dXJuKHQw
KQogICAgIGVuZAogCkBAIC0zMDAyLDcgKzMwMDksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2l0ZXJhdG9yX29wZW4sIE9wCiAKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2l0ZXJhdG9yLCB0
MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4
dFNsb3cKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0
YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNp
emUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCkKKyAgICBwZXJmb3JtR2V0QnlJREhl
bHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVy
YXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmRE
aXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkgZW5kKQogCiAuaXRlcmF0b3JPcGVuR2VuZXJpY0dl
dE5leHRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29w
ZW5fZ2V0X25leHQpCkBAIC0zMDYxLDcgKzMwNjgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2l0ZXJhdG9yX25leHQsIE9wCiAKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykK
ICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5nZXREb25lU2xvdwotICAgIHBlcmZvcm1HZXRC
eUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2Zp
bGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFs
dWUpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fZG9uZU1vZGVN
ZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3Rv
cmVEb25lQW5kSm1wVG9HZXRWYWx1ZSwgbWFjcm8oYSwgYiwgYywgZCkgZW5kKQogCiAuZ2V0RG9u
ZVNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9n
ZXRfZG9uZSkKQEAgLTMwODYsNyArMzA5Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRl
cmF0b3JfbmV4dCwgT3AKICAgICAjIFJlbG9hZCB0aGUgbmV4dCByZXN1bHQgdG1wIHNpbmNlIHRo
ZSBnZXRfYnlfaWQgYWJvdmUgbWF5IGhhdmUgY2xvYmJlcmVkIHQzLgogICAgIGxvYWRWYXJpYWJs
ZShnZXQsIG1fdmFsdWUsIHQzKQogICAgICMgV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGUg
aXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJlIHNpbmNlIHdlIHdpbGwgaGF2ZSB0aHJvd24g
YW4gZXJyb3IgYmVmb3JlLgotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0
LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCkKKyAgICBwZXJmb3JtR2V0QnlJREhl
bHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUs
IC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gsIG1h
Y3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLmdldFZhbHVlU2xvdzoKICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKQEAgLTMxNTksNyArMzE2
Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZW51bWVyYXRvcl9nZXRfYnkKICAgICBsb2Fk
cSBjb25zdGV4cHIgKChvZmZzZXRJbkJ1dHRlcmZseShmaXJzdE91dE9mTGluZU9mZnNldCkpICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSlbdDAsIHQyLCA4XSwgdDIKIAogLmRvbmU6Ci0gICAgdmFs
dWVQcm9maWxlKE9wRW51bWVyYXRvckdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAgICB2
YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MykK
ICAgICByZXR1cm4odDIpCiAKIC5nZXRTbG93UGF0aDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI4
MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NCwxMSArMTI4NCwxMiBAQCBtYWNybyBnZXR0ZXJT
ZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOCiAgICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tjZnJd
LCBQQwogZW5kCiAKLW1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5
cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQorbWFjcm8gYXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFu
ZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBjb25zdCBj
ZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQogICAgIGNvbnN0IGluZGV4aW5nVHlwZSA9IGNlbGxB
bmRJbmRleGluZ1R5cGUgCi0gICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBz
Y3JhdGNoCi0gICAgc3RvcmVpIHNjcmF0Y2gsIG9mZnNldCArIEFycmF5UHJvZmlsZTo6bV9sYXN0
U2VlblN0cnVjdHVyZUlEW21ldGFkYXRhXQorICAgIGxvYWRwIG9mZnNldFttZXRhZGF0YV0sIHNj
cmF0Y2gyCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzY3JhdGNoMQor
ICAgIHN0b3JlaSBzY3JhdGNoMSwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURb
c2NyYXRjaDJdCiAgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0s
IGluZGV4aW5nVHlwZQogZW5kCiAKQEAgLTE2MTIsOCArMTYxMyw4IEBAIG1hY3JvIGZ1bmN0aW9u
SW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1MKICAgICBhZGRwIC1wcm9maWxlQXJnU2tpcCwgdDAg
IyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBicGd0ZXEgdDAsIDAsIG9rIGVuZCkKICAgICBidHB6IHQwLCAuYXJndW1l
bnRQcm9maWxlRG9uZQotICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmls
ZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDFd
LCB0MwotICAgIGJ0cHogdDMsIC5hcmd1bWVudFByb2ZpbGVEb25lICMgV2hlbiB3ZSBjYW4ndCBK
SVQsIHdlIGRvbid0IGFsbG9jYXRlIGFueSBhcmd1bWVudCB2YWx1ZSBwcm9maWxlcy4KKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QxXSwgdDMKKyAgICBsb2FkcCBVbmxpbmtl
ZENvZGVCbG9jazo6bV92YWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJl
ZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QzXSwgdDMKICAgICBtdWxwIHNpemVvZiBWYWx1ZVByb2Zp
bGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCiAgICAgbHNo
aWZ0cCAzLCB0MCAjIG9mZnNldCBvZiBsYXN0IEpTVmFsdWUgYXJndW1lbnRzIG9uIHRoZSBzdGFj
ay4KICAgICBhZGRwIHQyLCB0MyAjIHBvaW50ZXIgdG8gZW5kIG9mIFZhbHVlUHJvZmlsZSBhcnJh
eSBpbiBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw4ICszNyw3IEBAIEJ5dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2UoQ29kZUIKICAg
ICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKTsgKytpKSB7Ci0g
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAg
ICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1
bWVudChpKS5icmllZkRlc2NyaXB0aW9uKGxvY2tlcik7CisgICAgICAgIENTdHJpbmcgZGVzY3Jp
cHRpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGkpLmJyaWVmRGVzY3Jp
cHRpb24oKTsKICAgICAgICAgaWYgKCFkZXNjcmlwdGlvbi5sZW5ndGgoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBvdXQucmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjgyMTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIFBS
T0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9maWxlKQogCiAjZGVmaW5lIFBST0ZJTEVfVkFM
VUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUo
dmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykucHJvZmlsZU5h
bWUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxl
IChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpAQCAtODg3
LDcgKzg4Nyw3IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG8KICAg
ICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5dGVjb2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5h
c0NlbGwoKTsKICAgICBpZiAoYXV0byBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0Fy
cmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3IpKSB7CiAgICAgICAgIGlmIChhdXRvIGFycmF5ID0g
anNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0sIGl0ZXJhYmxlKSkgewotICAgICAgICAgICAgbWV0
YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1
cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLT5vYnNlcnZl
U3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOwogCiAgICAgICAgICAgICBtZXRhZGF0
YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0
YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFycmF5OwogICAgICAgICAgICAg
YXV0byYgaW5kZXhTbG90ID0gYXJyYXlJdGVyYXRvci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRl
cmF0b3I6OkZpZWxkOjpJbmRleCk7CkBAIC05OTMsNyArOTkzLDcgQEAgSlNDX0RFRklORV9DT01N
T05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAgIEFTU0VSVCghYmFzZVZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2UtPnN0cnVjdHVyZUlEKCkpOworICAgIG1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZS0+c3RydWN0dXJl
SUQoKSk7CiAKICAgICBKU1N0cmluZyogbmFtZSA9IGVudW1lcmF0b3ItPmNvbXB1dGVOZXh0KGds
b2JhbE9iamVjdCwgYmFzZSwgaW5kZXgsIG1vZGUpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwpA
QCAtMTAxOSw3ICsxMDE5LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0
aF9lbgogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOjpJbmRleGVkTW9kZTogewogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwo
KSkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJl
SUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKSk7CiAgICAgfQogICAg
IGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1Y3R1cmVNb2RlOiB7CkBAIC0x
MDM0LDcgKzEwMzQsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2Vu
CiAKICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGU6IHsKICAg
ICAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBtb2RlICE9IEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZSkKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlE
KCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1
cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBKU1N0cmlu
Zyogc3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lKS5qc1ZhbHVl
KCkpOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGds
b2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwpAQCAtMTA2OCw3ICsxMDY4
LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAgIH0KIAog
ICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eU5h
bWUpLmpzVmFsdWUoKSk7Ci0gICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3RyaW5nLCAmbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGUpKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5C
eVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3RyaW5nLCBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSkpKTsKIH0KIAogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnVt
ZXJhdG9yX2hhc19vd25fcHJvcGVydHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437791</attachid>
            <date>2021-09-09 14:54:19 -0700</date>
            <delta_ts>2021-09-09 15:52:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>110110</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAyMS0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMgZm9yIG5vbi1jYWxsIG9wY29kZXMgaW50bworICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jay4gVGhpcyB3YXksIHRoZSBkYXRhIGlzIHNoYXJlZCBiZXR3
ZWVuIHRoZSBsaW5rZWQgQ29kZUJsb2NrcworICAgICAgICBvZiB0aGUgc2FtZSBVbmxpbmtlZENv
ZGVCbG9jay4gVGhlIHByb2ZpbGluZyBiZXQgaGVyZSBpcyB0aGF0IHdoZW4gdGhlIHNhbWUgY29k
ZQorICAgICAgICBydW5zIGluIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QsIGl0IGxhcmdlbHkg
cnVucyBpbiB0aGUgc2FtZSB3YXkuIFdlJ3ZlIG1hZGUKKyAgICAgICAgdGhpcyBzYW1lIGJldCBp
biBvdGhlciB3YXlzIHdpdGggb3VyIHByb2ZpbGluZywgYW5kIGl0IGxhcmdlbHkgbWFrZXMgc2Vu
c2UKKyAgICAgICAgdG8gZG8gZm9yIFZhbHVlUHJvZmlsZSBhbmQgQXJyYXlQcm9maWxlIHNpbmNl
IHRoZXkgYm90aCBob2xkIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaW5kZXBlbmRlbnQgZGF0YS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBpdCBzbyB3ZSBubyBsb25n
ZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAgICBwcm9jZXNzaW5nIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxvdyBtdWx0aXBsZSBjb21waWxl
cgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNoIG90aGVyIHdoZW4gdXBkYXRp
bmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAgICAgSXQgbWF5IGVuZCB1cCB3
aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1dCBpdCB3b24ndCBjb3JydXB0
IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIG1lYXN1cmVkIGFzIGEgMSUgc3BlZWR1
cCBvbiBTcGVlZG9tZXRlcjIuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbik6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZWRBcnJheU1vZGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjptYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6Om1heVN0b3JlVG9Ib2xlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjpvdXRPZkJvdW5kcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNo
ZWNrcG9pbnQuaDoKKyAgICAgICAgKEpTQzo6dmFsdWVQcm9maWxlRm9ySW1wbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVycyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2
ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGljdGlv
bnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rp
b25Gb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNo
QXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJyYXlMZW5ndGhNb2RlKToKKyAg
ICAgICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChK
U0M6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyOjpwcmVkaWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxl
Lmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZW5zdXJlVmFsdWVQcm9maWxlcyk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjplbnN1cmVBcnJheVByb2ZpbGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxl
QmFzZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6
OmNsZWFyQnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmJyaWVmRGVz
Y3JpcHRpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RC
dWNrZXQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2Rl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBj
b25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRv
TWFrZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U6
OnJ1bik6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNv
ZGUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0
QnlWYWxPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OmRpcmVjdFB1dEJ5VmFsT3B0aW1pemUpOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfZnJvbV9zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnBlcmZvcm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5
dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorCiAyMDIxLTA5
LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYWRkIGZpbGVzIHRvIHhjb2RlcHJvagpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsMTggKzExOCwyMyBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFt
JiBvdXQsIEFyCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkJpZ1VpbnQ2NEFycmF5TW9kZSIp
OwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQg
QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlSUQpCisgICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAg
IFN0cnVjdHVyZUlEIGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOworICAgIGlmICghaWQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9sYXN0U2VlblN0cnVj
dHVyZUlEKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ss
IGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOworICAgIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQordm9pZCBBcnJheVByb2Zp
bGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkKIHsKKyAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxk
IGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuIFRoYXQgd29uJ3QgbGVhZAor
ICAgIC8vIHRvIGFueSBmb3JtIG9mIGNvcnJ1cHRpb24sIGJ1dCBjb3VsZCBjYXVzZSB1cyB0byBn
byBkb3duICFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKKyAgICAvLyBwYXRoIHNpbXVsdGFu
ZW91c2x5LgogICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZXNGcm9tU3RydWN0
dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0
UnVuUHJ1bmluZwpAQCAtMTYzLDEzICsxNjgsMTMgQEAgdm9pZCBBcnJheVByb2ZpbGU6Om9ic2Vy
dmVJbmRleGVkUmVhZChWTQogICAgIH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVm
RGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
Y29kZUJsb2NrKQorQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
Y29kZUJsb2NrKTsKLSAgICByZXR1cm4gYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhs
b2NrZXIpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2spOworICAgIHJl
dHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CiB9CiAKLUNTdHJpbmcgQXJy
YXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhv
dXRVcGRhdGluZygpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJp
bnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDIyICsyMTcsMjIg
QEAgcHVibGljOgogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOyB9CiAgICAgdm9p
ZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7Ci0gICAgdm9p
ZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgdm9pZCBjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlN
b2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVk
QXJyYXlNb2RlczsgfQotICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzOyB9CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7
IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9Ib2xlKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KLSAgICBib29sIG91dE9m
Qm91bmRzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZC
b3VuZHM7IH0KKyAgICBib29sIG1heVN0b3JlVG9Ib2xlKCkgY29uc3QgeyByZXR1cm4gbV9tYXlT
dG9yZVRvSG9sZTsgfQorICAgIGJvb2wgb3V0T2ZCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX291
dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOyB9CiAKLSAgICBD
U3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJs
b2NrKik7Ci0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYpOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihDb2Rl
QmxvY2sqKTsKKyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsK
ICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIG9wIDpnZXRf
YXJndW1lbnQsCiAgICAgICAgIGluZGV4OiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmFyZ3VtZW50X2NvdW50LApAQCAtMTgzLDcgKzE4Myw3IEBA
IG9wIDp0b190aGlzLAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhY2hlZFN0cnVjdHVyZUlE
OiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMsCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6Y2hlY2tfdGR6LApAQCAtMzA5LDcgKzMwOSw3IEBAIG9wX2dyb3Vw
IDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcCA6Yml0bm90LApAQCAt
MzE4LDcgKzMxOCw3IEBAIG9wIDpiaXRub3QsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZQorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3BfZ3JvdXAg
OlVuYXJ5T3AsCkBAIC0zNjMsNyArMzYzLDcgQEAgb3AgOnRvX29iamVjdCwKICAgICAgICAgbWVz
c2FnZTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0K
IAogb3BfZ3JvdXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLApAQCAtMzc2LDcgKzM3Niw3IEBAIG9w
X2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5hcnlPcCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpu
ZWdhdGUsCkBAIC00NDUsNyArNDQ1LDcgQEAgb3AgOmluX2J5X3ZhbCwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOmluX2J5X2lkLApAQCAtNDc3LDcgKzQ3Nyw4IEBAIG9wIDpn
ZXRfYnlfaWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OCw3
ICs0ODksNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpn
ZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTQ5OSw3ICs1MDAsNyBAQCBvcCA6Z2V0X2J5X3ZhbF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBA
IC01MDksNyArNTEwLDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5
OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCiAgICAgfQpAQCAtNTIwLDcgKzUyMSw3
IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0cnlfZ2V0
X2J5X2lkLApAQCAtNTMwLDcgKzUzMSw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBw
cm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAg
IH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3MSw4ICs1NzIsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6
IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAgLTU4Myw3ICs1ODQsNyBAQCBvcCA6Z2V0X3By
aXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJ
RCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFy
cmllcltKU0NlbGxdLApAQCAtNjMyLDcgKzYzMyw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAg
ICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Miw3ICs2
NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9k
ZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAog
b3AgOmRlbF9ieV92YWwsCkBAIC04NDIsNyArODQzLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qLAogICAgIH0KIAogb3AgOnRhaWxfY2FsbCwKQEAgLTg1NCw3ICs4NTUsNyBAQCBvcCA6
dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZv
OiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBA
IC04NjcsNyArODY4LDcgQEAgb3AgOmNhbGxfZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAg
fQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgwLDggKzg4MSw4IEBAIG9wIDpjYWxsX3ZhcmFy
Z3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
YXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZCwKQEAgLTkwMSw4ICs5MDIsOCBAQCBvcCA6
dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRt
cHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIyLDgg
KzkyMyw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3QsCkBAIC05MzUsNyArOTM2LDcgQEAgb3Ag
OmNvbnN0cnVjdCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y29uc3RydWN0X3Zh
cmFyZ3MsCkBAIC05NDgsOCArOTQ5LDggQEAgb3AgOmNvbnN0cnVjdF92YXJhcmdzLAogICAgICAg
ICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5j
bHVkaW5nVGhpczogdW5zaWduZWQKQEAgLTEwMjgsNyArMTAyOSw3IEBAIG9wIDpnZXRfZnJvbV9z
Y29wZSwKICAgICAgICAgICAgIHN0cnVjdHVyZTogV3JpdGVCYXJyaWVyQmFzZVtTdHJ1Y3R1cmVd
LAogICAgICAgICB9LAogICAgICAgICBvcGVyYW5kOiB1aW50cHRyX3QsICNvZmZzZXQgNgotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsICMgb2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosICMgb2Zmc2V0IDcKICAgICB9LAogICAgIG1ldGFkYXRhX2luaXRpYWxp
emVyczogewogICAgICAgICBnZXRQdXRJbmZvOiA6Z2V0UHV0SW5mbywKQEAgLTEwNjUsNyArMTA2
Niw3IEBAIG9wIDpnZXRfZnJvbV9hcmd1bWVudHMsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1
bWVudHMsCkBAIC0xMTczLDcgKzExNzQsNyBAQCBvcCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAg
ICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9y
TWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg3LDggKzExODgsOCBAQCBvcCA6ZW51bWVyYXRvcl9n
ZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAg
IGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjAyLDcg
KzEyMDMsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9ieV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAg
ICB9CiAKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG9wIDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6
IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyNDksMTEgKzEyNTAsMTEgQEAgb3Ag
Oml0ZXJhdG9yX29wZW4sCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBpdGVyYXRp
b25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAgICBpdGVyYWJsZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgaXRl
cmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwK
LSAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgbmV4dFByb2ZpbGU6
IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3lt
Ym9sQ2FsbDogbmlsLApAQCAtMTI3MiwxMyArMTI3MywxMyBAQCBvcCA6aXRlcmF0b3JfbmV4dCwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxl
LAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBjYWxs
TGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAg
IGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEs
Ci0gICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICB2YWx1ZVByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBuZXh0UmVz
dWx0OiBKU1ZhbHVlLApAQCAtMTMyMiw3ICsxMzIzLDcgQEAgb3AgOmdldF9pbnRlcm5hbF9maWVs
ZCwKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDpwdXRfaW50ZXJuYWxfZmllbGQsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5k
c0ZvckNoZWNrcG9pbnQuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDIwICs1NywyMCBAQCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwo
Qnl0ZWNvCiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3Rl
eHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAg
ICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRv
ck9wZW46OnN5bWJvbENhbGw6IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7Ci0g
ICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9u
ZXh0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0
dXJuIG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JP
cGVuOjpnZXROZXh0OiByZXR1cm4gbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBl
bHNlIGlmIGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0
b3JfbmV4dCkgewogICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBj
YXNlIE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRS
ZXN1bHRQcm9maWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1
cm4gJm1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmdldFZhbHVlOiByZXR1cm4gJm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBjYXNl
IE9wSXRlcmF0b3JOZXh0Ojpjb21wdXRlTmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3Vs
dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBt
ZXRhZGF0YS5tX2RvbmVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRW
YWx1ZTogcmV0dXJuIG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAg
ICAgICByZXR1cm4gJm1ldGFkYXRhLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRh
Lm1fcHJvZmlsZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYgKzM3NCwxMCBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhWTSYgdm0sIFN0cnVjdHVyZSogCiBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKKyAgICAvLyBX
ZSBjYW4ndCBmaW5hbGl6ZSBhIEdDIHdoaWxlIGluIGhlcmUgc2luY2Ugd2UgbmVlZCB0byBtYWtl
IHN1cmUgdG8KKyAgICAvLyBtYWtlIHN1cmUgb3VyIFZhbHVlUHJvZmlsZXMgYW5kIEFycmF5UHJv
ZmlsZXMgYWxsIHBvaW50IHRvIHByb3BlciBsb2NhdGlvbnMuCisgICAgUkVMRUFTRV9BU1NFUlQo
dm0uaGVhcC5pc0RlZmVycmVkKCkpOyAKKwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICBmaW5pc2hDcmVhdGlvbkNvbW1vbih2bSk7CiAKQEAgLTQzNSw3ICs0MzksOCBAQCBib29s
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgLy8gQm9va2tlZXAgdGhl
IHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpT
TW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7
CiAKLSAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9u
Ki8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAvKm1ldGFkYXRhKi8pIHsKKyAgICBhdXRvIGxp
bmtfcHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRl
Y29kZSovLCBhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZV92PFZhbHVlUHJvZmlsZSosIGRlY2x0eXBlKG1ldGFkYXRhLm1fcHJvZmlsZSk+KTsKICAg
ICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgIH07CiAKQEAg
LTQ5OSw5ICs1MDQsOSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
CiAKICAgICAgICAgTElOSyhPcEdldEJ5SWQsIHByb2ZpbGUpCiAKLSAgICAgICAgTElOSyhPcEVu
dW1lcmF0b3JOZXh0LCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wRW51bWVyYXRvckluQnlWYWws
IHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIHByb2Zp
bGUpCisgICAgICAgIExJTksoT3BFbnVtZXJhdG9yTmV4dCkKKyAgICAgICAgTElOSyhPcEVudW1l
cmF0b3JJbkJ5VmFsKQorICAgICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093blByb3BlcnR5KQog
ICAgICAgICBMSU5LKE9wRW51bWVyYXRvckdldEJ5VmFsLCBwcm9maWxlKQogCiAgICAgICAgIExJ
TksoT3BDYWxsLCBwcm9maWxlKQpAQCAtNzYxLDYgKzc2Niw5NiBAQCBib29sIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksK
IAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzKCk7CisgICAgICAgIGlmIChtX21ldGFkYXRhKSB7CisjZGVmaW5lIENPVU5UKF9fb3Ap
IFwKKyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOwor
ICAgICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDT1VOVCkKKyN1
bmRlZiBDT1VOVAorICAgICAgICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9w
SXRlcmF0b3JPcGVuPigpICogMzsKKyAgICAgICAgICAgIHNpemUgKz0gbV9tZXRhZGF0YS0+bnVt
RW50cmllczxPcEl0ZXJhdG9yTmV4dD4oKSAqIDM7CisgICAgICAgIH0KKworICAgICAgICBSRUxF
QVNFX0FTU0VSVChzaXplKTsKKworICAgICAgICBhdXRvJiB2YWx1ZVByb2ZpbGVzID0gdW5saW5r
ZWRDb2RlQmxvY2stPmVuc3VyZVZhbHVlUHJvZmlsZXMoc2l6ZSk7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkK
KyAgICAgICAgICAgIHZhbHVlUHJvZmlsZXNbaV0uY2xlYXJCdWNrZXRzKCk7CisKKyAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUg
Zmlyc3QgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1l
bnQgdmFsdWUgcHJvZmlsZXMKKworICAgICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICAg
ICAgYXV0byBhc3NpZ24gPSBbJl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgICAgICBwcm9maWxlID0gJnZhbHVlUHJvZmlsZXNbaW5kZXgrK107CisKKyAgICAgICAgICAg
ICAgICAvLyBUaGVzZSBWYWx1ZVByb2ZpbGVzIGNvdWxkIGJlIHN0YWxlLCBzaW5jZSBVbmxpbmtl
ZENvZGVCbG9jayBkb2Vzbid0IHZpc2l0CisgICAgICAgICAgICAgICAgLy8gdGhlbSBpbiBhbnkg
d2F5LiBTbyB0aGV5IGNvdWxkIGJlIGx5aW5nIGFyb3VuZCBmcm9tIHdoZW4gc29tZSBwcmlvciBD
b2RlQmxvY2sKKyAgICAgICAgICAgICAgICAvLyB3YXMgZXhlY3V0aW5nLCBidXQgZGllZCBhZnRl
ciBzdG9yaW5nIHRvIHRoZW0uIFNvIHRvIGJlIGNvbnNlcnZhdGl2ZSwgd2UgY2xlYXIKKyAgICAg
ICAgICAgICAgICAvLyBhbnkgdW5wcm9jZXNzZWQgdmFsdWVzIG5vdy4KKyAgICAgICAgICAgICAg
ICBwcm9maWxlLT5jbGVhckJ1Y2tldHMoKTsKKyAgICAgICAgICAgIH07CisKKyNkZWZpbmUgVklT
SVQoX19vcCkgXAorICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1
dG8mIG1ldGFkYXRhKSB7IGFzc2lnbihtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICAgICAg
ICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCisjdW5kZWYgVklT
SVQKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZd
IChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9p
dGVyYWJsZVByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJh
dG9yUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFByb2Zp
bGUpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBh
c3NpZ24obWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNz
aWduKG1ldGFkYXRhLm1fZG9uZVByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRh
ZGF0YS5tX3ZhbHVlUHJvZmlsZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHNpemUpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgc2l6ZSA9IDA7CisKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyNkZWZp
bmUgQ09VTlQoX19vcCkgXAorICAgICAgICAgICAgc2l6ZSArPSBtX21ldGFkYXRhLT5udW1FbnRy
aWVzPF9fb3A+KCk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9G
SUxFKENPVU5UKQorI3VuZGVmIENPVU5UCisgICAgICAgICAgICBzaXplICs9IG1fbWV0YWRhdGEt
Pm51bUVudHJpZXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
c2l6ZSkgeworICAgICAgICAgICAgYXV0byYgYXJyYXlQcm9maWxlcyA9IHVubGlua2VkQ29kZUJs
b2NrLT5lbnN1cmVBcnJheVByb2ZpbGVzKHNpemUpOworICAgICAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSAwOworCisgICAgICAgICAgICBhdXRvIGFzc2lnbiA9IFsmXSAoQXJyYXlQcm9maWxlKiYg
cHJvZmlsZSkgeworICAgICAgICAgICAgICAgIHByb2ZpbGUgPSAmYXJyYXlQcm9maWxlc1tpbmRl
eCsrXTsKKworICAgICAgICAgICAgICAgIC8vIFNlZSBjb21tZW50IGFib3ZlIGFib3V0IHdoeSB3
ZSBjbGVhciBvdXQgc3RhbGUgdmFsdWVzIGluIHZhbHVlIHByb2ZpbGVzLgorICAgICAgICAgICAg
ICAgIC8vIFdlIGRvIHRoZSBhbmFsb2dvdXMgdGhpbmcgaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29u
LgorICAgICAgICAgICAgICAgIHByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgICAgICB9OworCisgICAgICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2Zp
bGVzIGZvciB0aGUgb3Bjb2RlcyBpbiBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxF
LgorICAgICAgICAgICAgLy8gV2UgZG9uJ3QgeWV0IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0
aGluZ3Mgd2l0aCBMTEludCBDYWxsTGlua0luZm9zLgorI2RlZmluZSBWSVNJVChfX29wKSBcCisg
ICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsgYXNzaWduKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgICAgICAgICBGT1Jf
RUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKFZJU0lUKQorI3VuZGVmIFZJU0lUCisKKyAg
ICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVBy
b2ZpbGUpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlu
ZGV4ID09IHNpemUpOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKG1fdW5saW5rZWRDb2Rl
LT53YXNDb21waWxlZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBp
bnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAt
OTI4LDggKzEwMjMsNiBAQCB2b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJuYXRpdmUoVk0mIHZtLCBD
CiB2b2lkIENvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVycyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsK
ICAgICBtX251bVBhcmFtZXRlcnMgPSBuZXdWYWx1ZTsKLQotICAgIG1fYXJndW1lbnRWYWx1ZVBy
b2ZpbGVzID0gRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPihPcHRpb25zOjp1c2VKSVQoKSA/IG5l
d1ZhbHVlIDogMCk7CiB9CiAKIENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlC
bG9ja09yTnVsbCgpCkBAIC0yNzczLDcgKzI4NjYsNyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9j
azo6Z2V0QXJyYXlQcm9maWxlCiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkg
ewogI2RlZmluZSBDQVNFMShPcCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAg
IHJldHVybiAmaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9m
aWxlOworICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMp
Lm1fYXJyYXlQcm9maWxlOwogCiAjZGVmaW5lIENBU0UyKE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bj
b2RlSUQ6IFwKQEAgLTI3ODUsMTMgKzI4NzgsNiBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6
Z2V0QXJyYXlQcm9maWxlCiAjdW5kZWYgQ0FTRTEKICN1bmRlZiBDQVNFMgogCi0gICAgY2FzZSBP
cEdldEJ5SWQ6Om9wY29kZUlEOiB7Ci0gICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkPigpOwotICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKHRoaXMpOwotICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9
PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gJm1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yOTAw
LDE5ICsyOTg2LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUK
ICAgICAgICAgICAgIG51bVNhbXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsg
Ly8gV2UgZG9uJ3Qgd2FudCBwcm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdp
dmVuIG1vcmUgd2VpZ2h0LgogICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51
bVNhbXBsZXM7CiAgICAgICAgIGlmIChpc0FyZ3VtZW50KSB7Ci0gICAgICAgICAgICBwcm9maWxl
LmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgcHJvZmlsZS5j
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2Ft
cGxlZEJlZm9yZSgpKQogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzKys7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cik7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfSk7
CiAKICAgICBpZiAobV9tZXRhZGF0YSkgewogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9w
Q2F0Y2g+KFsmXShhdXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1f
YnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2goWyZd
KFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlciYgcHJvZmlsZSkgewotICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKQEAgLTI5MzEsMTAgKzMw
MTcsOCBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAKIHZvaWQg
Q29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKCkKIHsKLSAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCiAgICAgZm9yRWFjaEFycmF5UHJvZmlsZShb
Jl0oQXJyYXlQcm9maWxlJiBwcm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlciwgdGhpcyk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKHRoaXMpOwogICAgIH0pOwogICAgIAogICAgIGZvckVhY2hBcnJheUFsbG9j
YXRpb25Qcm9maWxlKFsmXShBcnJheUFsbG9jYXRpb25Qcm9maWxlJiBwcm9maWxlKSB7CkBAIC0z
MTY0LDcgKzMyNDgsNyBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9m
CiAKICNkZWZpbmUgQ0FTRShPcCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCi0gICAgICAg
IHJldHVybiAmaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsK
KyAgICAgICAgcmV0dXJuIGluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX3By
b2ZpbGU7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShDQVNF
KQogCkBAIC0zMTgxLDEwICszMjY1LDEwIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlH
ZXRWYWx1ZVByb2YKICAgICB9CiB9CiAKLVNwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQ
cm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKK1NwZWN1bGF0ZWRUeXBlIENv
ZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4KQogewogICAgIGlmIChWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmls
ZSA9IHRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkpCi0g
ICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOworICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24oKTsKICAgICByZXR1cm4gU3BlY05vbmU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDc0
LDE5ICs0NzQsMTYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFZh
bHVlUHJvZmlsZXMoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRWYWx1ZVByb2Zp
bGVzLnNpemUoKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9udW1QYXJhbWV0ZXJzKSB8fCAh
T3B0aW9uczo6dXNlSklUKCkpOwotICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJvZmls
ZXMuc2l6ZSgpOworICAgICAgICByZXR1cm4gbnVtUGFyYW1ldGVycygpOwogICAgIH0KIAogICAg
IFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJ
bmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7IC8vIFRoaXMg
aXMgb25seSBjYWxsZWQgZnJvbSB0aGUgdmFyaW91cyBKSVQgY29tcGlsZXJzIG9yIHBsYWNlcyB0
aGF0IGZpcnN0IGNoZWNrIG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzIGJlZm9yZSBjYWxs
aW5nIHRoaXMuCi0gICAgICAgIFZhbHVlUHJvZmlsZSYgcmVzdWx0ID0gbV9hcmd1bWVudFZhbHVl
UHJvZmlsZXNbYXJndW1lbnRJbmRleF07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IHJldHVybiB1bmxpbmtlZENvZGVCbG9jaygpLT52YWx1ZVByb2ZpbGUoYXJndW1lbnRJbmRleCk7
CiAgICAgfQogCiAgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KEJ5dGVjb2RlSW5kZXgpOwotICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rp
b25Gb3JCeXRlY29kZUluZGV4KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5k
ZXgpOworICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29k
ZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoVmFsdWVQcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYp
OwpAQCAtMTAxNSw3ICsxMDEyLDYgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxv
Y2tzLgogICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlP
cGVyYW5kVmFsdWVQcm9maWxlczsKICNlbmRpZgotICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmls
ZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25v
d24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrSW5saW5lcy5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzks
MjIgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29ucwogCiAgICAgaWYg
KG1fbWV0YWRhdGEpIHsKICNkZWZpbmUgVklTSVQoX19vcCkgXAotICAgICAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3By
b2ZpbGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZd
IChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7
CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKIAog
I3VuZGVmIFZJU0lUCiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Bl
bj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9p
dGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVy
YXRvclByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJv
ZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2Zp
bGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxl
LCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxz
ZSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRv
ck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEu
bV9uZXh0UmVzdWx0UHJvZmlsZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5t
X2RvbmVQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQ
cm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRSZXN1bHRQ
cm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX2RvbmVQcm9maWxl
LCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFs
c2UpOwogICAgICAgICB9KTsKICAgICB9ICAgCiAKQEAgLTY0LDEzICs2NCw4IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShj
b25zdCBGdW5jdG9yJiBmdW5jKQogewogICAgIGlmIChtX21ldGFkYXRhKSB7Ci0gICAgICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAg
ICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6
QXJyYXlMZW5ndGgpCi0gICAgICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KICNkZWZpbmUg
VklTSVQxKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0
YS5tX2FycmF5UHJvZmlsZSk7IH0pOwogCiAjZGVmaW5lIFZJU0lUMihfX29wKSBcCiAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRh
dGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKQEAgLTgyLDcgKzc3LDcgQEAg
dm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29ucwogI3VuZGVmIFZJU0lUMgog
CiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUp
OworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwogICAgICAg
ICB9KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZE1ldGFkYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRNZXRhZGF0YS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDExICs0OCw2IEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewogfTsKIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIpOwogCi1zdHJ1
Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIHsKLSAgICBBcnJheVByb2ZpbGUgYXJy
YXlQcm9maWxlOwotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFB
cnJheUxlbmd0aCkgPT0gMTIpOwotCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9h
ZCB7CiAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0OwpAQCAtOTAsNyArODUsNiBAQCB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsK
ICAgICB9OwogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAg
IEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCB1bnNldE1vZGU7Ci0gICAgR2V0QnlJZE1vZGVNZXRh
ZGF0YUFycmF5TGVuZ3RoIGFycmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRh
UHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJ
ZE1vZGVNZXRhZGF0YSkgPT0gMTYpOwpAQCAtMTEzLDcgKzEwNyw2IEBAIHN0cnVjdCBHZXRCeUlk
TW9kZU1ldGFkYXRhIHsKICAgICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFE
ZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5z
ZXRNb2RlOwotICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5n
dGhNb2RlOwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1v
ZGU7CiAgICAgfTsKICAgICBHZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTM3LDcgKzEzMCw2IEBAIGlu
bGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNldFVuc2UKIGlubGluZSB2b2lkIEdldEJ5
SWRNb2RlTWV0YWRhdGE6OnNldEFycmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5
SWRNb2RlOjpBcnJheUxlbmd0aDsKLSAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9m
aWxlKSBBcnJheVByb2ZpbGU7CiAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZy
b20gZXZlciBoYXBwZW5pbmcuCiAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxMyArMzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlcigpIHsgfQogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
Ojp+Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQg
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQordm9pZCBDb21wcmVz
c2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNp
emUoKTsgKytpKQotICAgICAgICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIpOworICAgICAgICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOwogfQogCiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5k
VmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUqIExhenlPcGVyYW5kVmFsdQogfQogCiBTcGVjdWxhdGVkVHlwZSBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJlZGljdGlvbigKLSAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkg
Y29uc3QKKyAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZUtleSYga2V5KSBjb25zdAogewogICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
KiBwcm9maWxlID0gZ2V0SWZQcmVzZW50KGtleSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAg
ICByZXR1cm4gU3BlY05vbmU7CiAgICAgCi0gICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHJldmlzaW9uIDI4MjE4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZ1bmMo
Km1ldGFkYXRhKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICBBTFdB
WVNfSU5MSU5FIHNpemVfdCBudW1FbnRyaWVzKCkKKyAgICB7CisgICAgICAgIGF1dG8qIHN0YXJ0
ID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldChPcDo6b3Bjb2RlSUQp
KTsKKyAgICAgICAgYXV0byogZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0
YSo+KGdldEltcGwoT3A6Om9wY29kZUlEICsgMSkpOworICAgICAgICByZXR1cm4gZW5kIC0gc3Rh
cnQ7CisgICAgfQorCiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKICAgICB2b2lkIHJlZigp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAy
ODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJp
dFdpZHRoRm9yTWF4CiAgICAgbWFjcm8oT3BFbnVtZXJhdG9yR2V0QnlWYWwpIFwKICAgICBtYWNy
byhPcEVudW1lcmF0b3JJbkJ5VmFsKSBcCiAgICAgbWFjcm8oT3BFbnVtZXJhdG9ySGFzT3duUHJv
cGVydHkpIFwKKyAgICBtYWNybyhPcEdldEJ5SWQpIFwKIAogI2RlZmluZSBGT1JfRUFDSF9PUENP
REVfV0lUSF9BUlJBWV9BTExPQ0FUSU9OX1BST0ZJTEUobWFjcm8pIFwKICAgICBtYWNybyhPcE5l
d0FycmF5KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIK
ICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIK
ICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUg
IlJlZ0V4cC5oIgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5j
bHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgi
CiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KQEAgLTQxOSw2ICs0MjEsOCBAQCBwcml2YXRlOgogICAg
IEZpeGVkVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgRml4ZWRWZWN0b3I8
V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIEZpeGVkVmVj
dG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb247CisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJvZmlsZXM7
IC8vIFRoZSBmaXJzdCBudW1QYXJhbWV0ZXJzKCkgYXJlIGFyZ3VtZW50IHByb2ZpbGVzLgorICAg
IEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4gbV9hcnJheVByb2ZpbGVzOwogICAgIHVzaW5nIEZ1
bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4+OwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1
bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHBy
czsKQEAgLTQ1Niw2ICs0NjAsMjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3V0T2ZMaW5l
SnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQogCisgICAgVmFsdWVQcm9m
aWxlJiB2YWx1ZVByb2ZpbGUodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Zh
bHVlUHJvZmlsZXNbaV07CisgICAgfQorCisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiYg
ZW5zdXJlVmFsdWVQcm9maWxlcyh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlmICghbV92YWx1ZVByb2ZpbGVzLnNpemUoKSkKKyAg
ICAgICAgICAgIG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4oc2l6
ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWVQcm9maWxlcy5zaXplKCkgPT0gc2l6
ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgfQorCisgICAgRml4ZWRW
ZWN0b3I8QXJyYXlQcm9maWxlPiYgZW5zdXJlQXJyYXlQcm9maWxlcyh1bnNpZ25lZCBzaXplKQor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSk7CisgICAgICAgIGlmICghbV9hcnJh
eVByb2ZpbGVzLnNpemUoKSkKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9IEZpeGVkVmVj
dG9yPEFycmF5UHJvZmlsZT4oc2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXJyYXlQ
cm9maWxlcy5zaXplKCkgPT0gc2l6ZSk7CisgICAgICAgIHJldHVybiBtX2FycmF5UHJvZmlsZXM7
CisgICAgfQorCiBwcml2YXRlOgogICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRzID0gSGFz
aE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyODIxODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDExIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAg
ICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAgICB7CisgICAgICAgIGNsZWFyQnVja2V0cygp
OworICAgIH0KKworICAgIHZvaWQgY2xlYXJCdWNrZXRzKCkKKyAgICB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKQogICAgICAgICAg
ICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQpAQCAt
OTIsOSArOTcsOSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgCi0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQorICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbigp
CiAgICAgewotICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAg
ICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmdQ
cmludFN0cmVhbSBvdXQ7CiAgICAgICAgIG91dC5wcmludCgicHJlZGljdGluZyAiLCBTcGVjdWxh
dGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CkBAIC0xMTgsMTAgKzEyMywxMCBAQCBzdHJ1Y3QgVmFs
dWVQcm9maWxlQmFzZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gVXBkYXRlcyB0
aGUgcHJlZGljdGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4gTmV2ZXIgY2FsbCB0aGlzIGZy
b20gYW55IHRocmVhZAotICAgIC8vIHRoYXQgaXNuJ3QgZXhlY3V0aW5nIHRoZSBjb2RlLgotICAg
IFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImKQorICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigp
CiAgICAgeworICAgICAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaW50
byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIC8vIFRoZSBpbXBvcnQgcGFydCBpcyB0
aGF0IHdlIGRvbid0IGVuZCB1cCBjb3JydXB0aW5nIGFueSB2YWx1ZXMuCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CiAgICAg
ICAgICAgICBpZiAoIXZhbHVlKQpAQCAtMTU2LDYgKzE2MSw3IEBAIHN0cnVjdCBWYWx1ZVByb2Zp
bGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1ZVByb2ZpbGUo
KSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoVmFsdWVQcm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9m
aWxlQW5kVmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAyODIxODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDEwICszNiwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKLUFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFj
dGlvbiwgYm9vbCBtYWtlU2FmZSkKK0FycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChB
cnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1ha2VTYWZl
KQogewogICAgIEFycmF5OjpDbGFzcyBub25BcnJheTsKLSAgICBpZiAocHJvZmlsZS0+dXNlc09y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikpCisgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmln
aW5hbEFycmF5U3RydWN0dXJlcygpKQogICAgICAgICBub25BcnJheSA9IEFycmF5OjpPcmlnaW5h
bE5vbkFycmF5OwogICAgIGVsc2UKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6Tm9uQXJyYXk7
CkBAIC02MywyNyArNjMsMjcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNv
bnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb252ZXJ0cyA9IEFycmF5OjpBc0lzOwog
Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFjdGlv
bikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0aFByb2ZpbGUo
cHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH07CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkID0g
cHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CisgICAgQXJyYXlNb2RlcyBvYnNl
cnZlZCA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwogICAgIHN3aXRjaCAob2JzZXJ2
ZWQpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVucHJv
ZmlsZWQpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJh
eSk6Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJ
bnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBB
cnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQog
ICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdBcmd1bWVudHMs
IG5vbkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pOwot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBu
b25BcnJheSwgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2Zp
bGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNp
bmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2Zp
bGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKEFycmF5V2l0aFVuZGVjaWRlZCk6CiAgICAgICAgIGlmIChhY3Rpb24gPT0gQXJy
YXk6OldyaXRlKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNp
bmdBcmd1bWVudHMsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBBcnJheTo6Q29u
dmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VW5kZWNpZGVk
LCBBcnJheTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFycmF5LCBBcnJheTo6T3V0T2ZCb3Vu
ZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsK
ICAgICAgICAgCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFy
cmF5KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoVW5kZWNpZGVk
KToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0aW9uID09IEFy
cmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywg
QXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkNvbnZlcnQs
IGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJl
ZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVz
aW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmls
ZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlz
KE5vbkFycmF5V2l0aEludDMyKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoSW50MzIpOgpAQCAtMTEzLDUwICsxMTMsNTAgQEAgQXJyYXlNb2RlIEFy
cmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICByZXR1cm4gaGFuZGxlQ29udGln
dW91c01vZGVzKEFycmF5OjpDb250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAgICBjYXNlIGFzQXJy
YXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgbm9uQXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1
dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlz
KE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJy
YXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAg
Y2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFn
ZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6
OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUs
IG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdl
LCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUs
IG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBB
cnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1h
a2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJy
YXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0
aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFz
QXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRB
cnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhO
b25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5n
VHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3Rv
cmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDhBcnJheU1vZGU6Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJ
cywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBJbnQx
NkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MTZBcnJheSwg
bm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmls
ZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQxNkFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFr
ZVNhZmUpOwogICAgIGNhc2UgSW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1v
ZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRo
UHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6SW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndp
dGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4QXJyYXlNb2RlOgot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25BcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAg
Y2FzZSBVaW50OENsYW1wZWRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0
aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgVWludDE2QXJy
YXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZBcnJheSwgbm9u
QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZBcnJheSwg
bm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICBjYXNlIFVpbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRo
UHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53
aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9hdDMyQXJyYXlNb2Rl
OgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXksIG5vbkFycmF5
LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VT
YWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQzMkFycmF5LCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgIGNhc2UgRmxvYXQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFBy
b2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1v
ZGUoQXJyYXk6OkZsb2F0NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndp
dGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0ludDY0QXJyYXlNb2Rl
OgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0QXJyYXksIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBCaWdVaW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1v
ZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkgdHlwZXMsIG9yIGEg
VHlwZWRBcnJheSBhbmQgbm9uLXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8g
dHJ5IHRvIGNvbnZlcnQgdGhlIG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29udmVydCB0eXBlZCBh
cnJheXMuCiAgICAgICAgIGlmIChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJBWV9NT0RFUykKLSAg
ICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFycmF5LCBBcnJh
eTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsK
KyAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAKLSAg
ICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9u
QXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkK
LSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlv
bnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICBpZiAoKG9ic2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhOb25BcnJheSkpICYmIHByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQor
ICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9u
cykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgICAg
ICAKICAgICAgICAgQXJyYXk6OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6OkNsYXNzIGFycmF5
Q2xhc3M7CkBAIC0xODMsNyArMTgzLDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2Vy
dmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcnJheUNsYXNzID0gQXJyYXk6
OlBvc3NpYmx5QXJyYXk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUs
IGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5
Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh3b3JkKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQ
cm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CisgICAgc3RhdGljIEFycmF5
TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtl
U2FmZSk7CiAgICAgCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJheTo6U3BlY3Vs
YXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewpAQCAtMTkwLDEzICsxOTAsMTMgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3Vs
YXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAotICAgIEFycmF5
TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
IGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAg
IEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2Zp
bGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6U3BlY3VsYXRp
b24gbXlTcGVjdWxhdGlvbjsKIAogICAgICAgICBpZiAobWFrZVNhZmUpCiAgICAgICAgICAgICBt
eVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgICAgICBlbHNlIGlmIChwcm9m
aWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIpKQorICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5t
YXlTdG9yZVRvSG9sZSgpKQogICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpUb0hv
bGU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5C
b3VuZHM7CkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB3aXRo
U3BlY3VsYXRpb24obXlTcGVjdWxhdGlvbik7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZSB3
aXRoUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3aXRoUHJvZmls
ZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAg
ICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNsYXNzOwogCiAgICAgICAgIGlmIChpc0pTQXJyYXko
KSkgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewotICAgICAgICAgICAg
ICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhs
b2NrZXIpOworICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0
dXJlcygpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgeworICAgICAgICAgICAgICAg
IEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwog
ICAgICAgICAgICAgICAgIGlmIChoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1vZGVzKSAm
JiAhaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCiAgICAgICAgICAgICAgICAgICAg
IG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbENvcHlPbldyaXRlQXJyYXk7CiAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoIWhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5TW9kZXMpICYm
IGhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9kZXMpKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNs
YXNzKCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNs
YXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZl
KTsKKyAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1
bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH0KICAgICAKICAgICBB
cnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6OlR5cGUgdHlwZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
ODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uRnJvbUZvckNvZGVCbG9ja0FuZEJ5
dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbikKICAgICAgICAgewotICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbjsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcmVkaWN0aW9u
ID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleChsb2Nr
ZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZVBy
ZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKICAg
ICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0gbV92bS0+ZnV6emVyQWdlbnQoKTsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2VudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgcHJlZGlj
dGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05ODMsMTAgKzk3OSw5IEBAIHByaXZhdGU6CiAK
ICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSYgcHJvZmlsZSwgQXJyYXk6
OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2spOwotICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmlsZS5vdXRPZkJv
dW5kcyhsb2NrZXIpOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQobG9j
a2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jayk7Cisg
ICAgICAgIGJvb2wgbWFrZVNhZmUgPSBwcm9maWxlLm91dE9mQm91bmRzKCk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZCgmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7
CiAgICAgfQogCiAgICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIwNTgsOSArMjA1
Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmkKICAgICAgICAg
ICAgIC8vIGFyZ3VtZW50cyByZWNlaXZlZCBpbnNpZGUgdGhlIGNhbGxlZS4gQnV0IHRoYXQgcHJv
YmFibHkgd29uJ3QgbWF0dGVyIGZvciBtb3N0CiAgICAgICAgICAgICAvLyBjYWxscy4KICAgICAg
ICAgICAgIGlmIChjb2RlQmxvY2sgJiYgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgVmFs
dWVQcm9maWxlJiBwcm9maWxlID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChh
cmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAgdmFyaWFibGUt
PnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChudW1TZXRBcmd1bWVudHMgPj0gbWFuZGF0b3J5TWluaW11bSA/IFNldEFyZ3VtZW50TWF5
YmUgOiBTZXRBcmd1bWVudERlZmluaXRlbHksIE9wSW5mbyh2YXJpYWJsZSkpOwpAQCAtNjMwNSw3
ICs2Mjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgaWYgKHNob3VsZENvbXBpbGVBc0dldEJ5SWQpCiAgICAgICAgICAgICAgICAgaGFu
ZGxlR2V0QnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwg
aWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQsIG5leHRP
cGNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayku
bV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2UgaXQgb25seSB1
c2VzIHRocmVlIGNoaWxkCiAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5MgpAQCAt
NzA3NSwxMSArNzA2OSw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4s
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1l
bnRzOwogCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0KICAg
ICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFs
UmVnaXN0ZXImIHByb2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHBy
b2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGlj
dGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAg
LTc0MzEsNyArNzQyMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9j
ayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKIAotICAgICAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUs
IEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0
QXJyYXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAg
ICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhp
dChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6
Z2V0VmFsdWUpKTsKIAogICAgICAgICAgICAgICAgIHsKQEAgLTgzMjYsNyArODMxOCw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7Ci0gICAgICAgICAgICAgICAgQXJy
YXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgQXJyYXlN
b2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgp
KSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2luX2J5X3ZhbCk7CkBAIC04NDEwLDcgKzg0MDIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9uZXh0
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAg
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9h
cnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQo
Ynl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0KGJ5dGVjb2Rl
Lm1faW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChieXRlY29kZS5t
X2VudW1lcmF0b3IpOwpAQCAtODQ0Miw3ICs4NDM0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfZ2V0X2J5X3Zh
bDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7
CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0
YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKIAogICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODUwNiw3ICs4NDk4
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBj
YXNlIG9wX2VudW1lcmF0b3JfaW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpOwogICAgICAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAg
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9k
ZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsK
IAogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFzZSkpOwogICAg
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lKSk7CkBA
IC04NTIxLDcgKzg1MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5OiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0
b3JIYXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChi
eXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODg4MSw3ICs4ODczLDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZQogICAgIH0KIAogICAgIGlmICghY29tcGls
ZWRBc1B1dEJ5SWQpIHsKLSAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9k
ZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3Jp
dGUpOworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCpieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3JpdGUpOwogCiAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9w
ZXJ0eSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNDIsOSArNDA0Miw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIEFycmF5OjpSZWFkKTsK
ICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgYXJyYXlQcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJsb2NrKTsKLSAg
ICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgYXJy
YXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOworICAgICAgICAgICAgYXJyYXlQcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24ocHJvZmlsZWRCbG9jayk7CisgICAgICAgICAgICBh
cnJheU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChhcnJheVByb2ZpbGUsIEFycmF5OjpS
ZWFkLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6
VW5wcm9maWxlZCkgewogICAgICAgICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJyYXkgb3BlcmF0
aW9ucywgaXQgbWFrZXMgc2Vuc2UgdG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAgICAgICAgICAg
IC8vIGFjY2Vzc2VzIGFzIEZvcmNlRXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRoZXIgdGhhbiB1
c2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCwxNiArNDgsMTMgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAg
QVNTRVJUKGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkgPj0gMSk7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xv
Y2spOwotICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRo
ZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KICAgICAg
ICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3
aXRoIHRoZWlyIHByZWRpY3Rpb25zLgogICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9n
cmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKIAog
ICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAg
ICBWYWx1ZVByb2ZpbGUmIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZv
ckFyZ3VtZW50KGFyZyk7Ci0gICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0KAotICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNb
YXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw3ICszMDIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlBy
b2ZpbGVkT3Bjb2RlKC4uLik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAg
ICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1f
cHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2b2lkPgorICAgICAgICBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZh
bHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4KICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpOwogCiAgICAgICAgIHZvaWQgZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbEdQUiwgQXJyYXlQcm9maWxlKiwg
UmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBAIGlubGluZSB2
b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci1pbmxpbmUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1l
dGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0
VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkKK2lubGluZSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJv
ZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFsdWVQcm9maWxp
bmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBieXRlY29kZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjgsMTAgKzEwMjgsOCBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsT3B0aW1pCiAgICAgICAgIGlmICghaXND
b3B5T25Xcml0ZShiYXNlT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2NyaXB0LmlzSW50
MzIoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdH
ZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
cHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0
dXJlKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywgUHV0S2luZDo6Tm90
RGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwOTgsMTAg
KzEwOTYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5VmFsCiAgICAg
aWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAmJiBzdWJzY3Jp
cHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVj
dC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdH
ZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgIGlmIChwcm9m
aWxlKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKHByb2ZpbGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJlcGF0
Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNj
cmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTI0MTIsMTAgKzI0MDgsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uR2V0QnlWCiAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNJ
bnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZhbHVlLmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGlu
Z0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAgICAgaWYgKHBy
b2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcmVw
YXRjaEFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0LCAqc3R1YkluZm8pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZp
c2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsK
KyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAog
ICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIp
OwogCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSQogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldEJ5VmFsPigpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9k
c3Q7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXhdOwogICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsKQEAgLTQ2OSw3
ICs0NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RyCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAs
IHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVn
VDQpOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFs
KGNvbnN0IEkKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgICAgICBlY21h
TW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmlsZSA9ICZtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02MjIsMTEgKzYyMiw4IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICBlbWl0TG9hZChi
YXNlLCByZWdUMSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNl
LCByZWdUMSk7CiAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0
aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0
aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJ
ZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwocmVnVDAsICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJy
YXlQcm9maWxlLCByZWdUMik7Ci0gICAgICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMp
OwotICAgIH0KKyAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVX
aXRoQ2VsbChyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIHJlZ1QyKTsKIAogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKApAQCAtNzk3LDcgKzc5NCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywg
cmVnVDIpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CkBA
IC04MjAsNyArODE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJ
bgogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4o
KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9m
aWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgSklUSW5CeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlz
aW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICBB
cnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJy
YXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3BlcnR5LCByZWdUMSk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSklUOjpnZW5lcmF0
ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QKICAgICBpZiAoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKSB7
CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAg
ICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAg
ICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fdmFsdWU7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9m
aWxlOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwpAQCAtNDgyLDcgKzQ4Miw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAgdmFsdWUg
PSBieXRlY29kZS5tX3ZhbHVlOwogICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1v
ZGU7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwotICAgICAgICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgICAg
ICBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAgICAgfTsKIAogICAgIGlmIChp
c0RpcmVjdCkKQEAgLTExMDgsMTEgKzExMDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQoY29uc3QgSW5zdHJ1CiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJl
Z1QwLCBiYXNlVlJlZyk7CiAgICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIEp1bXAgbm90
QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsKLSAgICAgICAgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5n
dGhNb2RlLmFycmF5UHJvZmlsZSwgcmVnVDEpOwotICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUu
bGluayh0aGlzKTsKLSAgICB9CisgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCByZWdUMSk7
CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCkBA
IC0xNTExLDcgKzE1MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5z
dHJ1CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxl
KiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3Bl
cnR5LCByZWdUMSk7CkBAIC0xNTM4LDcgKzE1MzUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5fYnlfdmFsKGNvbnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7
CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAK
ICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4
KytdOwogCkBAIC0yMzkzLDcgKzIzOTAsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJCiAgICAgfQogCiAgICAgc3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51
bWJlck9mQnVja2V0cyA9PSAxKTsKLSAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKG1ldGFkYXRh
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MobWV0YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxl
KSksIHJlZ1QxKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBWYWx1ZVByb2Zp
bGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwogCiAgICAgcmV0KCk7CiAKQEAgLTI0NDksNyAr
MjQ0Nyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICBD
YWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgSnVtcCBleGNl
cHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0g
ICAgaml0LnN0b3JlNjQocmVnVDAsIEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIs
IE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSkpOworICAgIGppdC5sb2FkUHRy
KEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihNZXRh
ZGF0YSwgbV9wcm9maWxlKSksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBqaXQu
c3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgVmFsdWVQ
cm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KCkpKTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogCiAj
aWYgQ1BVKFg4Nl82NCkKQEAgLTI4NTQsNyArMjg1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5kZXggPSBieXRlY29k
ZS5tX2luZGV4OwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU5hbWUgPSBieXRlY29kZS5t
X3Byb3BlcnR5TmFtZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9IGJ5dGVjb2Rl
Lm1fZW51bWVyYXRvcjsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9h
cnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGU7CiAKICAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjgyMTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQo
Q2FsbEZyYW1lKiBjYWwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9QUk9G
SUxFX1ZBTFVFKHZhbHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAor
ICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS0+bV9idWNrZXRz
WzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAj
ZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFy
Z2V0VGFnKSBcCkBAIC03NjEsNyArNzYxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJv
dG90eXBlQ2FjaGUoSgogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiB9CiAK
LXN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFk
YXRhJiBtZXRhZGF0YSkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBH
ZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODI0LDggKzgyNCw5IEBAIHN0YXRpYyBK
U1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QKICAgICB9IGVsc2UgaWYgKCFMTElOVF9B
TFdBWVNfQUNDRVNTX1NMT1cgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIG1ldGFkYXRhLnNldEFycmF5TGVu
Z3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJv
ZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7
CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihjb2RlQmxvY2spOwogICAgIH0KQEAgLTg0MSw3ICs4NDIsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsK
IAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpOwogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOwogfQogCkBAIC04NTcsMTAgKzg1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaXRlcmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKQogICAgICAg
ICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0gICAgSlNWYWx1ZSByZXN1
bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRl
cmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywg
Z2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
ICAgIG5leHRSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLT5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApA
QCAtODc3LDEwICs4NzgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJh
dG9yXwogICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVy
Zm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0
dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBt
ZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwogICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2RvbmVQcm9m
aWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9F
TkQoKTsKIH0KIApAQCAtODk0LDEwICs4OTUsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2l0ZXJhdG9yXwogICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1
cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVy
Zm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0
dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0
YSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVl
LCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLCBudWxscHRyKTsKICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKICAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3Zh
bHVlUHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
TExJTlRfRU5EKCk7CiB9CiAKQEAgLTEwMjQsNyArMTAyNSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0KICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQz
Ml90IGkgPSAqaW5kZXg7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAmbWV0
YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
ID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFz
ZVZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldElu
ZGV4KGkpKSB7CkBAIC0xNDI5LDcgKzE0MzAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaW5fYnlfdmFsCiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wSW5CeVZhbD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jayk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0
aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX2Jhc2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENv
bW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3By
b3BlcnR5KSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20J
KHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIG1h
Y3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGcKICAgICAgICAgbW92ZSBwYXls
b2FkLCB0MAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0NSwgdDEsIHQwKQorICAgICAgICB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDAsIHQyKQogICAgICAgICBnZXQo
bV9kc3QsIHQyKQogICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogICAg
ICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KQEAgLTg1LDcgKzg1LDcg
QEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydQogICAgIHN0b3JlaSBy
MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDMpCi0gICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIxLCByMCkK
KyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEs
IHIwLCB0MykKICAgICBkaXNwYXRjaCgpCiAKIGVuZApAQCAtNjc3LDkgKzY3NywxMCBAQCBtYWNy
byB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9uCiAgICAgICAgIGVuZCkKIGVuZAog
Ci1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEs
IHRhZywgcGF5bG9hZCkKLSAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21ldGFkYXRhXQotICAgIHN0b3Jl
aSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNr
ZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkLCBzY3JhdGNoKQorICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJVttZXRhZGF0YV0s
IHNjcmF0Y2gKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09m
ZnNldFtzY3JhdGNoXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0
cyArIFBheWxvYWRPZmZzZXRbc2NyYXRjaF0KIGVuZAogCiAKQEAgLTE0MzcsNyArMTQzOCw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKICAgICBsb2FkaSBPcEdl
dEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4o
dDAsIHQxKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE0NTgsMzcgKzE0NTksMjkgQEAg
bWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGJpbmVxIHQwLCB0
MSwgc2xvd0xhYmVsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVN
ZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFBy
b3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAgIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQzKQogICAg
IHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6Ci0gICAgYmJuZXEgdDEsIGNv
bnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKKyAg
ICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRV
bnNldAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9k
ZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCiAgICAgYmluZXEgdDMsIHQxLCBzbG93TGFiZWwKICAgICBs
b2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9M
b2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0s
IHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0MSkKLSAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQx
KQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0
MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKLS5vcEdldEJ5SWRBcnJheUxlbmd0aDoK
LSAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCwgLm9wR2V0
QnlJZFVuc2V0Ci0gICAgbW92ZSB0MywgdDAKLSAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJv
ZmlsZSwgdDAsIHQyLCB0NSkKLSAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKLSAgICBi
dGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCi0gICAgbG9hZHAgSlNPYmplY3Q6
Om1fYnV0dGVyZmx5W3QzXSwgdDAKLSAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAotICAgIGJpbHQg
dDAsIDAsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCBJbnQzMlRhZywgdDApCi0gICAgcmV0dXJuKEludDMyVGFnLCB0MCkKKyMg
SXQgY2FuJ3QgYmUgYXJyYXkgbGVuZ3RoIHNpbmNlIHdlIGRvbid0IHVzZSB0aGlzIGZvciBhcmJp
dHJhcnkgZ2V0X2J5X2lkJ3MgdGhhdCBjb3VsZAorIyBhY2Nlc3MgImxlbmd0aCIuIFdlIG9ubHkg
dXNlIGl0IGZvciBpdGVyYXRvciBvcGNvZGVzIHdoaWNoIGFyZW4ndCB1c2luZyAibGVuZ3RoIiBh
cyBhbgorIyBpZGVudGlmaWVyLgogICAgIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAK
ICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBVbmRlZmluZWRUYWcsIDApCisgICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywgMCwg
dDMpCiAgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKIAogZW5kCkBAIC0xNTA2LDIwICsxNDk5
LDIwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKICAgICBiaW5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2Fk
cCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hl
ZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0
MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQx
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMp
CiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVx
IHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMs
IC5vcEdldEJ5SWRTbG93KQogICAgIG1vdmUgdDMsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0
QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2Zp
bGUsIHQyLCB0NSwgdDApCisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MSkKICAgICBidGl6IHQyLCBJc0FycmF5LCAub3BH
ZXRCeUlkU2xvdwogICAgIGJ0aXogdDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xv
dwogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAgbG9hZGkgLXNp
emVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVu
Z3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKKyAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDAsIHQzKQogICAgIHJl
dHVybihJbnQzMlRhZywgdDApCiAKIC5vcEdldEJ5SWRVbnNldDoKQEAgLTE1MjcsNyArMTUyMCw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKICAgICBsb2FkaSBP
cEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURb
dDVdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxs
VGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9w
cm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQs
IG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5lZFRhZywgMCwgdDMpCiAgICAgcmV0dXJuKFVuZGVmaW5l
ZFRhZywgMCkKIAogLm9wR2V0QnlJZERlZmF1bHQ6CkBAIC0xNTM2LDcgKzE1MjksNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAgICAgbG9hZGlzIE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0NV0s
IHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRT
bG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1
cm4odDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoKQEAgLTE1NDYsNyArMTUzOSw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKIC5vc3JSZXR1cm5Qb2ludDoKICAg
ICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAg
IG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUs
IHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0Miwg
cjEsIHIwLCB0MykKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNjI0LDcgKzE2MTcs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgICAgIGdl
dChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCBzY3JhdGNoLCA4XQogICAgICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkLCBzY3Jh
dGNoKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2MzMsNyArMTYyNiw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICAgICAgZmQyaWkg
cmVzdWx0LCBzY3JhdGNoMiwgc2NyYXRjaDMKICAgICAgICAgc3RvcmVpIHNjcmF0Y2gzLCBUYWdP
ZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KICAgICAgICAgc3RvcmVpIHNjcmF0Y2gyLCBQYXlsb2Fk
T2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIsIHNjcmF0Y2gx
KQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2NDEsNyArMTYzNCw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBnZXQobV9iYXNlLCB0
MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywg
dDAsIC5vcEdldEJ5VmFsU2xvdykKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShP
cEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgYXJy
YXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0
MSwgdDMpCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKICAgICBs
b2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MwpAQCAtMTY3OCw3ICsxNjcxLDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9wR2V0QnlWYWxOb3RF
bXB0eToKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1f
cHJvZmlsZSwgdDUsIHQyLCB0MSwgdDMpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5v
dEluZGV4ZWRTdG9yYWdlOgpAQCAtMTY5MSw3ICsxNjg0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRl
ck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQy
LCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIw
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQz
KQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkKQEAgLTE3MTIsNyArMTcwNSw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwKICAgICBiaW5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CiAKICAgICBsb2FkUHJv
cGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShP
cEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJu
KHQwLCB0MSkKIAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTc3NCw3ICsxNzY3LDggQEAg
bWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogCiAgICAgICAgIC5vdXRP
ZkJvdW5kczoKICAgICAgICAgICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRCeVZhbE91
dE9mQm91bmRzCi0gICAgICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICAgICAgbG9hZHAg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQyCisgICAgICAg
ICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQogICAgICAg
ICAgICAgYWRkaSAxLCB0MywgdDIKICAgICAgICAgICAgIHN0b3JlaSB0MiwgLXNpemVvZiBJbmRl
eGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXQog
ICAgICAgICAgICAgam1wIC5zdG9yZVJlc3VsdApAQCAtMTc4NSw3ICsxNzc5LDcgQEAgbWFjcm8g
cHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBnZXQobV9iYXNlLCB0
MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxU
YWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCi0gICAgICAgIGFy
cmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0Miwg
dDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAgICAgIGdldChtX3Byb3BlcnR5LCB0
MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIEludDMy
VGFnLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0
ZXJmbHlbdDFdLCB0MApAQCAtMTgzOSw3ICsxODMzLDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZh
bEFycmF5U3RvcmFnZUVtcHR5OgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAg
ICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0KICAgICAgICAg
YWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJp
YiB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAg
ICAgICBhZGRpIDEsIHQzLCB0MQpAQCAtMTg0Nyw3ICsxODQyLDggQEAgbWFjcm8gcHV0QnlWYWxP
cChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0
b3JhZ2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoKLSAgICAgICAg
c3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRP
ZkJvdW5kc1t0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Fy
cmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0
T2ZCb3VuZHNbdDFdCiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKQEAgLTI1
MTUsNyArMjUxMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8K
ICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldCh0MywgdDAsIHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNj
b3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZy
b21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0
MikKICAgICBlbmQKIApAQCAtMjUyNCw3ICsyNTIwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAgICBsb2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAg
ICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwgdDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vz
c2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUs
IHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9m
aWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApA
QCAtMjUzMiw3ICsyNTI4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29w
ZSwgTwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0
NV0sIHQzCiAgICAgICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFRh
Z09mZnNldFt0MCwgdDMsIDhdLCB0MQogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVu
dF92YXJpYWJsZXMgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MywgOF0sIHQyCi0gICAgICAgIHZhbHVl
UHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQorICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MiwgdDMpCiAg
ICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNjgsMTUgKzY4LDE2IEBAIG1hY3JvIG1ha2VS
ZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGcKICAgICBmbihtYWNybyAodmFsdWUpCiAgICAg
ICAgIG1vdmUgdmFsdWUsIHQzCiAgICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0MSwgdDMpCisgICAgICAgIHZhbHVl
UHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzLCB0MikKICAgICAgICAgZ2V0
KG1fZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAgICAgICAgZGlz
cGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRhZGF0YV0KK21h
Y3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFs
dWUsIHNjcmF0Y2gpCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmls
ZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAorICAgIHN0b3JlcSB2YWx1ZSwgVmFsdWVQcm9maWxl
OjptX2J1Y2tldHNbc2NyYXRjaF0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0
ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KQEAgLTg3LDcg
Kzg4LDcgQEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydQogICAgIGdl
dChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAgICAgc3RvcmVx
IHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0
MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0Miwg
cjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIs
IHIwLCB0MykKICAgICBkaXNwYXRjaCgpCiBlbmQKIApAQCAtMTUwOSw3ICsxNTEwLDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LAogICAgIGJpbmVxIHQwLCB0MSwg
Lm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRh
OjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwg
dDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIs
IHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQw
LCB0MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTUxOCw3
ICsxNTE5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LAogZW5k
KQogCiAjIFRoZSBiYXNlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0MwotbWFjcm8gcGVyZm9ybUdl
dEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVO
YW1lLCBzbG93TGFiZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBwZXJmb3JtR2V0
QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5h
bWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwgZG9BcnJheVByb2ZpbGUpCiAg
ICAgbWV0YWRhdGEodDIsIHQxKQogICAgIGxvYWRiICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
JW1vZGVNZXRhZGF0YU5hbWUlLm1vZGVbdDJdLCB0MQogCkBAIC0xNTI5LDcgKzE1MzAsNyBAQCBt
YWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgYmluZXEgdDAsIHQx
LCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1l
dGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJv
cGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQog
CiAub3BHZXRCeUlkUHJvdG9Mb2FkOgpAQCAtMTU0MCwyNyArMTU0MSwyNyBAQCBtYWNybyBwZXJm
b3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0
W3QyXSwgdDEKICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRh
dGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxvYWRQcm9wZXJ0
eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4odDApCiAKIC5v
cEdldEJ5SWRBcnJheUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2Rl
OjpBcnJheUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0MywgdDAKLSAgICBhcnJh
eVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJy
YXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBkb0FycmF5UHJvZmls
ZSh0MCwgdDIsIHQ1LCB0MSkKICAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKICAgICBi
dGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENhZ2VkSlNWYWx1
ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJ
bmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3Qw
XSwgdDAKICAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVyVGFnLCB0MAot
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkK
KyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAs
IHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKICAg
ICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmluZWQsIHQxKQog
ICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKIAogZW5kCkBAIC0xNTY4LDcgKzE1NjksMTAgQEAg
ZW5kCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV9iYXNlLCB0
MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5
SWRTbG93KQotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRh
dGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisg
ICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9m
aWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwKKyAgICAgICAgbWFj
cm8gKGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCisg
ICAgICAgICAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9hcnJheVByb2Zp
bGUsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCisg
ICAgICAgIGVuZCkKIAogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X2lkKQpAQCAtMTU3Nyw3ICsxNTgxLDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QgogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNl
dHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEo
dDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwLCB0MykKICAgICBy
ZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE2OTgsNyArMTcwMiw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQs
IHNjcmF0Y2gpCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVxIHJl
c3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IG1fcHJvZmlsZSwgdDUsIHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZGlzcGF0Y2goKQogICAg
IGVuZAogCkBAIC0xNzE5LDcgKzE3MjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV92YWwsIE9wR2V0CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDIsIHQw
LCAub3BHZXRCeVZhbFNsb3cpCiAKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShP
cEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgYXJy
YXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0
MSwgdDMpCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTc1OSw3ICsxNzYz
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogCiAub3BHZXRC
eVZhbERvbmU6CiAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MykKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFs
Tm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNzcyLDcgKzE3NzYsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0
dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEo
dDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCkK
KyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjAsIHQzKQogICAg
IHJldHVybihyMCkKIAogZW5kKQpAQCAtMTc5NCw3ICsxNzk4LDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLAogCiAgICAgbG9hZGkgT3BHZXRQcml2YXRlTmFtZTo6
TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJv
ZmlsZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2Zp
bGUsIHQyLCB0MCwgdDMpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRQcml2YXRlTmFtZVNsb3c6
CkBAIC0xODk3LDcgKzE5MDEsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjCiAKICAgICAgICAgLm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlhZXEgdDMsIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxl
bmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0b3JlYiAxLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVb
dDVdCisgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlW3Q1XSwgdDIKKyAgICAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5
U3RvcmVUb0hvbGVbdDJdCiAgICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgogICAgICAgICAgICAg
c3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVu
Z3Rocy5wdWJsaWNMZW5ndGhbdDBdCiAgICAgICAgICAgICBqbXAgLnN0b3JlUmVzdWx0CkBAIC0x
OTA3LDcgKzE5MTIsNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
CiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MSwgLm9wUHV0
QnlWYWxTbG93KQogICAgICAgICBtb3ZlIHQxLCB0MgogICAgICAgICBtZXRhZGF0YSh0NSwgdDAp
Ci0gICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlLCB0MiwgdDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAgICAgIGdldCht
X3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKQEAgLTE5NjIs
NyArMTk2Nyw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAg
ICAgICAgZGlzcGF0Y2goKQogCiAgICAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eToKLSAg
ICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUu
bV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2Zp
bGU6Om1fbWF5U3RvcmVUb0hvbGVbdDFdCiAgICAgICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjpt
X251bVZhbHVlc0luVmVjdG9yW3QwXQogICAgICAgICBiaWIgdDMsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIC5vcFB1
dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKICAgICAgICAgYWRkaSAxLCB0MywgdDEKQEAg
LTE5NzAsNyArMTk3Niw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWMKICAgICAgICAgam1wIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKIAogICAg
IC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3VuZHNbdDVdCisgICAgICAgIGxv
YWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0MQorICAg
ICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX291dE9mQm91bmRzW3QxXQogICAgIC5vcFB1
dEJ5VmFsU2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29k
ZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCkBAIC0yNjYyLDcgKzI2NjksNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgbWFjcm8gZ2V0UHJvcGVydHko
KQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0s
IHQxCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKLSAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDMp
CiAgICAgICAgIHJldHVybih0MikKICAgICBlbmQKIApAQCAtMjY3MCwxNCArMjY3NywxNCBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRwIE9w
R2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAgICAgbG9hZHEg
W3QwXSwgdDAKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCiAgICAgICAgIHJl
dHVybih0MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIoKQogICAgICAgICBs
b2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAg
IGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdLCB0MAotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQorICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MykK
ICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCkBAIC0zMDAyLDcgKzMwMDksNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wCiAKICAgICBsb2FkVmFyaWFibGUo
Z2V0LCBtX2l0ZXJhdG9yLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5pdGVyYXRv
ck9wZW5HZW5lcmljR2V0TmV4dFNsb3cKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJh
dG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5l
cmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCkKKyAg
ICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1f
bmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFk
YXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkgZW5kKQogCiAuaXRl
cmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCkBAIC0zMDYxLDcgKzMwNjgsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wCiAKICAgICBsb2FkVmFyaWFibGUo
Z2V0LCBtX3ZhbHVlLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5nZXREb25lU2xv
dwotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2RlTWV0
YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3Jl
RG9uZUFuZEptcFRvR2V0VmFsdWUpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRv
ck5leHQsIG1fZG9uZU1vZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBz
aXplLCBtZXRhZGF0YSwgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSwgbWFjcm8oYSwgYiwgYywg
ZCkgZW5kKQogCiAuZ2V0RG9uZVNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKQEAgLTMwODYsNyArMzA5Myw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3AKICAgICAjIFJlbG9hZCB0aGUgbmV4dCBy
ZXN1bHQgdG1wIHNpbmNlIHRoZSBnZXRfYnlfaWQgYWJvdmUgbWF5IGhhdmUgY2xvYmJlcmVkIHQz
LgogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQogICAgICMgV2UgZG9uJ3QgbmVl
ZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJlIHNpbmNlIHdl
IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3JlLgotICAgIHBlcmZvcm1HZXRCeUlESGVs
cGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwg
LmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCkKKyAg
ICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0
YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZh
bHVlQW5kRGlzcGF0Y2gsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLmdldFZhbHVlU2xvdzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1
ZSkKQEAgLTMxNTksNyArMzE2Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZW51bWVyYXRv
cl9nZXRfYnkKICAgICBsb2FkcSBjb25zdGV4cHIgKChvZmZzZXRJbkJ1dHRlcmZseShmaXJzdE91
dE9mTGluZU9mZnNldCkpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSlbdDAsIHQyLCA4XSwgdDIK
IAogLmRvbmU6Ci0gICAgdmFsdWVQcm9maWxlKE9wRW51bWVyYXRvckdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1fcHJv
ZmlsZSwgdDUsIHQyLCB0MykKICAgICByZXR1cm4odDIpCiAKIC5nZXRTbG93UGF0aDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NCwxMSArMTI4NCwx
MiBAQCBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOCiAgICAgbG9hZGkg
TExJbnRSZXR1cm5QQ1tjZnJdLCBQQwogZW5kCiAKLW1hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQs
IGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQorbWFjcm8gYXJyYXlQcm9m
aWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gxLCBzY3Jh
dGNoMikKICAgICBjb25zdCBjZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQogICAgIGNvbnN0IGlu
ZGV4aW5nVHlwZSA9IGNlbGxBbmRJbmRleGluZ1R5cGUgCi0gICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW2NlbGxdLCBzY3JhdGNoCi0gICAgc3RvcmVpIHNjcmF0Y2gsIG9mZnNldCArIEFy
cmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW21ldGFkYXRhXQorICAgIGxvYWRwIG9m
ZnNldFttZXRhZGF0YV0sIHNjcmF0Y2gyCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W2NlbGxdLCBzY3JhdGNoMQorICAgIHN0b3JlaSBzY3JhdGNoMSwgQXJyYXlQcm9maWxlOjptX2xh
c3RTZWVuU3RydWN0dXJlSURbc2NyYXRjaDJdCiAgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5n
VHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKQEAgLTE2MTIsOCArMTYxMyw4
IEBAIG1hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1MKICAgICBhZGRwIC1w
cm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUg
cGVlcGhvbGUKICAgICBhc3NlcnQobWFjcm8gKG9rKSBicGd0ZXEgdDAsIDAsIG9rIGVuZCkKICAg
ICBidHB6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQotICAgIGxvYWRwIENvZGVCbG9jazo6bV9h
cmd1bWVudFZhbHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRl
ZEFycmF5OjptX2RhdGFbdDFdLCB0MwotICAgIGJ0cHogdDMsIC5hcmd1bWVudFByb2ZpbGVEb25l
ICMgV2hlbiB3ZSBjYW4ndCBKSVQsIHdlIGRvbid0IGFsbG9jYXRlIGFueSBhcmd1bWVudCB2YWx1
ZSBwcm9maWxlcy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QxXSwgdDMK
KyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV92YWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0
b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QzXSwgdDMKICAgICBtdWxw
IHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCBy
ZWR1Y3Rpb24hCiAgICAgbHNoaWZ0cCAzLCB0MCAjIG9mZnNldCBvZiBsYXN0IEpTVmFsdWUgYXJn
dW1lbnRzIG9uIHRoZSBzdGFjay4KICAgICBhZGRwIHQyLCB0MyAjIHBvaW50ZXIgdG8gZW5kIG9m
IFZhbHVlUHJvZmlsZSBhcnJheSBpbiBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVz
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw3IEBAIEJ5dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2Rl
U2VxdWVuY2UoQ29kZUIKICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJv
ZmlsZXMoKTsgKytpKSB7Ci0gICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uID0gY29kZUJsb2NrLT52
YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChpKS5icmllZkRlc2NyaXB0aW9uKGxvY2tlcik7CisgICAg
ICAgIENTdHJpbmcgZGVzY3JpcHRpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3Vt
ZW50KGkpLmJyaWVmRGVzY3JpcHRpb24oKTsKICAgICAgICAgaWYgKCFkZXNjcmlwdGlvbi5sZW5n
dGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBvdXQucmVzZXQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9maWxlKQogCiAj
ZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwKLSAgICAg
ICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tldHNbMF0g
PSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykucHJvZmlsZU5hbWUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dBcml0eUNoZWNr
U3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2Nv
cGUmIHNjb3BlKQpAQCAtODg3LDcgKzg4Nyw3IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1
cm5UeXBlIGl0ZXJhdG8KICAgICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5dGVjb2RlLm1faXRl
cmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKICAgICBpZiAoYXV0byBhcnJheUl0ZXJhdG9yID0g
anNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3IpKSB7CiAgICAgICAg
IGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0sIGl0ZXJhYmxlKSkg
ewotICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVy
ZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmFi
bGVQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOwogCiAg
ICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1ldGFk
YXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFzdEFy
cmF5OwogICAgICAgICAgICAgYXV0byYgaW5kZXhTbG90ID0gYXJyYXlJdGVyYXRvci0+aW50ZXJu
YWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCk7CkBAIC05OTMsNyArOTkzLDcg
QEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAgIEFTU0VSVCgh
YmFzZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYmFz
ZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2UtPnN0cnVj
dHVyZUlEKCkpOworICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJl
SUQoYmFzZS0+c3RydWN0dXJlSUQoKSk7CiAKICAgICBKU1N0cmluZyogbmFtZSA9IGVudW1lcmF0
b3ItPmNvbXB1dGVOZXh0KGdsb2JhbE9iamVjdCwgYmFzZSwgaW5kZXgsIG1vZGUpOwogICAgIENI
RUNLX0VYQ0VQVElPTigpOwpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgSlNDX0RFRklORV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZTogewogICAgICAgICBpZiAoTElLRUxZ
KGJhc2VWYWx1ZS5pc0NlbGwoKSkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQo
YmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgUkVUVVJOX1BST0ZJ
TEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5k
ZXgpKSk7CiAgICAgfQogICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1
Y3R1cmVNb2RlOiB7CkBAIC0xMDM0LDcgKzEwMzQsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX2VuCiAKICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
R2VuZXJpY01vZGU6IHsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBtb2RlICE9
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZSkKLSAgICAgICAgICAg
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2Zp
bGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkp
OwogICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5dGVjb2RlLm1fcHJv
cGVydHlOYW1lKS5qc1ZhbHVlKCkpOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmlu
Zy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3df
cGF0aF9lbgogICAgIH0KIAogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhHRVQoYnl0
ZWNvZGUubV9wcm9wZXJ0eU5hbWUpLmpzVmFsdWUoKSk7Ci0gICAgUkVUVVJOKGpzQm9vbGVhbihD
b21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3RyaW5n
LCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihDb21t
b25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3RyaW5nLCBt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKIH0KIAogSlNDX0RFRklORV9DT01NT05fU0xPV19Q
QVRIKHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpCg==
</data>
<flag name="review"
          id="461036"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="461038"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437796</attachid>
            <date>2021-09-09 15:52:59 -0700</date>
            <delta_ts>2021-09-10 20:13:10 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>113784</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAyMS0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgVmFsdWVQ
cm9maWxlcyBhbmQgQXJyYXlQcm9maWxlcyBmb3Igbm9uLWNhbGwgb3Bjb2RlcyBpbnRvCisgICAg
ICAgIFVubGlua2VkQ29kZUJsb2NrLiBUaGlzIHdheSwgdGhlIGRhdGEgaXMgc2hhcmVkIGJldHdl
ZW4gdGhlIGxpbmtlZCBDb2RlQmxvY2tzCisgICAgICAgIG9mIHRoZSBzYW1lIFVubGlua2VkQ29k
ZUJsb2NrLiBUaGUgcHJvZmlsaW5nIGJldCBoZXJlIGlzIHRoYXQgd2hlbiB0aGUgc2FtZSBjb2Rl
CisgICAgICAgIHJ1bnMgaW4gYSBkaWZmZXJlbnQgZ2xvYmFsIG9iamVjdCwgaXQgbGFyZ2VseSBy
dW5zIGluIHRoZSBzYW1lIHdheS4gV2UndmUgbWFkZQorICAgICAgICB0aGlzIHNhbWUgYmV0IGlu
IG90aGVyIHdheXMgd2l0aCBvdXIgcHJvZmlsaW5nLCBhbmQgaXQgbGFyZ2VseSBtYWtlcyBzZW5z
ZQorICAgICAgICB0byBkbyBmb3IgVmFsdWVQcm9maWxlIGFuZCBBcnJheVByb2ZpbGUgc2luY2Ug
dGhleSBib3RoIGhvbGQgZ2xvYmFsIG9iamVjdAorICAgICAgICBpbmRlcGVuZGVudCBkYXRhLgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1ha2VzIGl0IHNvIHdlIG5vIGxvbmdl
ciBob2xkIHRoZSBDb2RlQmxvY2sgbG9jayB3aGVuCisgICAgICAgIHByb2Nlc3NpbmcgVmFsdWVQ
cm9maWxlcyBhbmQgQXJyYXlQcm9maWxlcy4gV2Ugbm93IGFsbG93IG11bHRpcGxlIGNvbXBpbGVy
CisgICAgICAgIHRocmVhZHMgdG8gcmFjZSBhZ2FpbnN0IGVhY2ggb3RoZXIgd2hlbiB1cGRhdGlu
ZyB0aGVzZSBwcm9maWxlcy4gVGhpcyBpcyBmaW5lLgorICAgICAgICBJdCBtYXkgZW5kIHVwIHdp
dGggaW5jb21wbGV0ZSBkYXRhIGluIHRoZSBwcm9maWxlcywgYnV0IGl0IHdvbid0IGNvcnJ1cHQg
dGhlbS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgbWVhc3VyZWQgYXMgYSAxJSBzcGVlZHVw
IG9uIFNwZWVkb21ldGVyMi4KKworICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKToK
KyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uKToKKyAgICAgICAg
KEpTQzo6QXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKToKKyAg
ICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpvYnNlcnZlZEFycmF5TW9kZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheVByb2Zp
bGU6Om1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6bWF5U3RvcmVUb0hvbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpBcnJheVBy
b2ZpbGU6Om91dE9mQm91bmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjp1
c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hl
Y2twb2ludC5oOgorICAgICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXROdW1QYXJhbWV0ZXJzKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zQW5kQ291bnRMaXZl
bmVzcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRlQWxsQXJyYXlQcmVkaWN0aW9u
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlv
bkZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZvckVhY2hWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hB
cnJheVByb2ZpbGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oOgorICAg
ICAgICAoSlNDOjpHZXRCeUlkTW9kZU1ldGFkYXRhOjpzZXRBcnJheUxlbmd0aE1vZGUpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJz
ZXI6OnByZWRpY3Rpb24gY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUu
aDoKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6bnVtRW50cmllcyk6CisgICAgICAgICog
Ynl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZSk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjplbnN1cmVWYWx1ZVByb2ZpbGVzKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmVuc3VyZUFycmF5UHJvZmlsZXMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVC
YXNlOjpWYWx1ZVByb2ZpbGVCYXNlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6
Y2xlYXJCdWNrZXRzKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6YnJpZWZEZXNj
cmlwdGlvbik6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1
Y2tldCk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbkZyb21Qcm9m
aWxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhQcm9maWxlIGNv
bnN0KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRBcnJheU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdG
aXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphdHRlbXB0VG9N
YWtlR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25JbmplY3Rpb25QaGFzZTo6
cnVuKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29k
ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXRC
eVZhbE9wdGltaXplKToKKyAgICAgICAgKEpTQzo6ZGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6Z2Vu
ZXJhdGVPcEdldEZyb21TY29wZVRodW5rKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9mcm9tX3Njb3BlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9ybUxMSW50R2V0QnlJRCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRC
eVZhbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwcm9maWxlci9Q
cm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0
ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZSk6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvck5leHRUcnlGYXN0SW1wbCk6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSCk6CisKIDIwMjEtMDkt
MDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCBhZGQgZmlsZXMgdG8geGNvZGVwcm9qCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExOCwxOCArMTE4LDIzIEBAIHZvaWQgZHVtcEFycmF5TW9kZXMoUHJpbnRTdHJlYW0m
IG91dCwgQXIKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiQmlnVWludDY0QXJyYXlNb2RlIik7
CiB9CiAKLXZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQordm9pZCBB
cnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKLSAgICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCkKKyAgICAvLyBNdWx0aXBsZSB0
aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuCisgICAg
U3RydWN0dXJlSUQgaWQgPSBtX2xhc3RTZWVuU3RydWN0dXJlSUQ7CisgICAgaWYgKCFpZCkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSBj
b2RlQmxvY2stPmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChtX2xhc3RTZWVuU3RydWN0
dXJlSUQpOwotICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywg
bGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSBj
b2RlQmxvY2stPmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChpZCk7CisgICAgY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgbGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIG1f
bGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CiB9CiAKLXZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpCit2b2lkIEFycmF5UHJvZmls
ZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmUqIGxhc3RTZWVuU3RydWN0dXJlKQogeworICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291bGQg
YmUgY2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4gVGhhdCB3b24ndCBsZWFkCisg
ICAgLy8gdG8gYW55IGZvcm0gb2YgY29ycnVwdGlvbiwgYnV0IGNvdWxkIGNhdXNlIHVzIHRvIGdv
IGRvd24gIW1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZworICAgIC8vIHBhdGggc2ltdWx0YW5l
b3VzbHkuCiAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1
cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIAogICAgIGlmICghbV9kaWRQZXJmb3JtRmlyc3RS
dW5QcnVuaW5nCkBAIC0xNjMsMTMgKzE2OCwxMyBAQCB2b2lkIEFycmF5UHJvZmlsZTo6b2JzZXJ2
ZUluZGV4ZWRSZWFkKFZNCiAgICAgfQogfQogCi1DU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZE
ZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBj
b2RlQmxvY2spOwotICAgIHJldHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGxv
Y2tlcik7CisgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jayk7CisgICAgcmV0
dXJuIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsKIH0KIAotQ1N0cmluZyBBcnJh
eVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKK0NTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91
dFVwZGF0aW5nKCkKIHsKICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgQ29tbWFQcmlu
dGVyIGNvbW1hOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsMjIgKzIxNywyMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlSUQoU3RydWN0dXJlSUQgc3RydWN0
dXJlSUQpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7IH0KICAgICB2b2lk
IG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsgbV9sYXN0U2VlblN0cnVj
dHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOyB9CiAKLSAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKLSAgICB2b2lk
IGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICB2b2lkIGNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqKTsKKyAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAK
ICAgICB2b2lkIG9ic2VydmVBcnJheU1vZGUoQXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRB
cnJheU1vZGVzIHw9IG1vZGU7IH0KICAgICB2b2lkIG9ic2VydmVJbmRleGVkUmVhZChWTSYsIEpT
Q2VsbCosIHVuc2lnbmVkIGluZGV4KTsKIAotICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1v
ZGVzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRB
cnJheU1vZGVzOyB9Ci0gICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVk
QWNjZXNzZXM7IH0KKyAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2RlcygpIGNvbnN0IHsg
cmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CisgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRl
eGVkQWNjZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
czsgfQogICAgIAotICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlTdG9yZVRvSG9sZTsgfQotICAgIGJvb2wgb3V0T2ZC
b3VuZHMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9vdXRPZkJv
dW5kczsgfQorICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoKSBjb25zdCB7IHJldHVybiBtX21heVN0
b3JlVG9Ib2xlOyB9CisgICAgYm9vbCBvdXRPZkJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fb3V0
T2ZCb3VuZHM7IH0KICAgICAKLSAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX3VzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlczsgfQorICAgIGJvb2wgdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KIAotICAgIENT
dHJpbmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxv
Y2sqKTsKLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJik7CisgICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uKENvZGVC
bG9jayopOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZygpOwog
ICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgb3AgOmdldF9h
cmd1bWVudCwKICAgICAgICAgaW5kZXg6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlLiosCiAgICAgfQogCiBvcCA6YXJndW1lbnRfY291bnQsCkBAIC0xODMsNyArMTgzLDcgQEAg
b3AgOnRvX3RoaXMsCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6
IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKICAgICB9CiAKIG9wIDpjaGVja190ZHosCkBAIC0zMDksNyArMzA5LDcgQEAgb3BfZ3JvdXAg
OlZhbHVlUHJvZmlsZWRCaW5hcnlPcCwKICAgICAgICAgcmhzOiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUKKyAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLioKICAgICB9CiAKIG9wIDpiaXRub3QsCkBAIC0z
MTgsNyArMzE4LDcgQEAgb3AgOmJpdG5vdCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJlZ2lz
dGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcF9ncm91cCA6
VW5hcnlPcCwKQEAgLTM2Myw3ICszNjMsNyBAQCBvcCA6dG9fb2JqZWN0LAogICAgICAgICBtZXNz
YWdlOiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6
IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQog
CiBvcF9ncm91cCA6VmFsdWVQcm9maWxlZFVuYXJ5T3AsCkBAIC0zNzYsNyArMzc2LDcgQEAgb3Bf
Z3JvdXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOm5l
Z2F0ZSwKQEAgLTQ0NSw3ICs0NDUsNyBAQCBvcCA6aW5fYnlfdmFsLAogICAgICAgICBwcm9wZXJ0
eTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9m
aWxlLiosCiAgICAgfQogCiBvcCA6aW5fYnlfaWQsCkBAIC00NzYsOCArNDc2LDkgQEAgb3AgOmdl
dF9ieV9pZCwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVN
ZXRhZGF0YSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAogb3AgOmdl
dF9ieV9pZF93aXRoX3RoaXMsCkBAIC00ODgsNyArNDg5LDcgQEAgb3AgOmdldF9ieV9pZF93aXRo
X3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X3ZhbF93aXRoX3RoaXMsCkBAIC00OTks
NyArNTAwLDcgQEAgb3AgOmdldF9ieV92YWxfd2l0aF90aGlzLAogICAgICAgICBwcm9wZXJ0eTog
VmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmls
ZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9
CiAKIG9wIDpnZXRfYnlfaWRfZGlyZWN0LApAQCAtNTA5LDcgKzUxMCw3IEBAIG9wIDpnZXRfYnlf
aWRfZGlyZWN0LAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsICMgbm90IHVzZWQgaW4gbGxp
bnQKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosICMgbm90IHVzZWQgaW4gbGxpbnQK
ICAgICAgICAgc3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgICAgICBvZmZzZXQ6IHVuc2ln
bmVkLAogICAgIH0KQEAgLTUyMCw3ICs1MjEsNyBAQCBvcCA6Z2V0X3Byb3RvdHlwZV9vZiwKICAg
ICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlLiosCiAgICAgfQogCiBvcCA6dHJ5X2dldF9ieV9pZCwKQEAgLTUzMCw3ICs1MzEsNyBAQCBv
cCA6dHJ5X2dldF9ieV9pZCwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgIH0sCiAg
ICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBw
cm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlfaWQsCkBAIC01NzEs
OCArNTcyLDggQEAgb3AgOmdldF9ieV92YWwsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUu
KiwKICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCkBA
IC01ODMsNyArNTg0LDcgQEAgb3AgOmdldF9wcml2YXRlX25hbWUsCiAgICAgICAgIHByb3BlcnR5
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAg
ICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQs
CiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKQEAgLTYzMiw3ICs2MzMs
NyBAQCBvcCA6cHV0X2J5X3ZhbCwKICAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisg
ICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6cHV0X2J5
X3ZhbF93aXRoX3RoaXMsCkBAIC02NTIsNyArNjUzLDcgQEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0
LAogICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpkZWxfYnlfdmFsLApAQCAtODQyLDcgKzg0
Myw3IEBAIG9wIDpjYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FsbExp
bmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0YWlsX2Nh
bGwsCkBAIC04NTQsNyArODU1LDcgQEAgb3AgOnRhaWxfY2FsbCwKICAgICB9LAogICAgIG1ldGFk
YXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgfQogCiBvcCA6Y2FsbF9ldmFsLApAQCAtODY3LDcgKzg2OCw3IEBAIG9wIDpjYWxsX2V2
YWwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50
Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmNhbGxfdmFyYXJncywKQEAgLTg4
MCw4ICs4ODEsOCBAQCBvcCA6Y2FsbF92YXJhcmdzLAogICAgICAgICBmaXJzdFZhckFyZzogaW50
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9m
aWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAg
ICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5jbHVkaW5nVGhpczogdW5zaWdu
ZWQsCkBAIC05MDEsOCArOTAyLDggQEAgb3AgOnRhaWxfY2FsbF92YXJhcmdzLAogICAgICAgICBm
aXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQ
cm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAg
ICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5jbHVk
aW5nVGhpczogdW5zaWduZWQKQEAgLTkyMiw4ICs5MjMsOCBAQCBvcCA6dGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzLAogICAgICAgICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0
YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUu
KiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y29uc3Ry
dWN0LApAQCAtOTM0LDggKzkzNSw4IEBAIG9wIDpjb25zdHJ1Y3QsCiAgICAgICAgIGFyZ3Y6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLiosCiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3RfdmFyYXJn
cywKQEAgLTk0OCw4ICs5NDksOCBAQCBvcCA6Y29uc3RydWN0X3ZhcmFyZ3MsCiAgICAgICAgIGZp
cnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVBy
b2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRp
bmdUaGlzOiB1bnNpZ25lZApAQCAtMTAyOCw3ICsxMDI5LDcgQEAgb3AgOmdldF9mcm9tX3Njb3Bl
LAogICAgICAgICAgICAgc3RydWN0dXJlOiBXcml0ZUJhcnJpZXJCYXNlW1N0cnVjdHVyZV0sCiAg
ICAgICAgIH0sCiAgICAgICAgIG9wZXJhbmQ6IHVpbnRwdHJfdCwgI29mZnNldCA2Ci0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwgIyBvZmZzZXQgNworICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwgIyBvZmZzZXQgNwogICAgIH0sCiAgICAgbWV0YWRhdGFfaW5pdGlhbGl6ZXJz
OiB7CiAgICAgICAgIGdldFB1dEluZm86IDpnZXRQdXRJbmZvLApAQCAtMTA2NSw3ICsxMDY2LDcg
QEAgb3AgOmdldF9mcm9tX2FyZ3VtZW50cywKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfdG9fYXJndW1l
bnRzLApAQCAtMTE3Myw3ICsxMTc0LDcgQEAgb3AgOmVudW1lcmF0b3JfbmV4dCwKICAgICAgICAg
ZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLiosCiAgICAgICAgIGVudW1lcmF0b3JNZXRhZGF0YTogRW51bWVyYXRvck1l
dGFkYXRhLAogICAgIH0KIApAQCAtMTE4Nyw4ICsxMTg4LDggQEAgb3AgOmVudW1lcmF0b3JfZ2V0
X2J5X3ZhbCwKICAgICAgICAgZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAg
ICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIGVudW1l
cmF0b3JNZXRhZGF0YTogRW51bWVyYXRvck1ldGFkYXRhLAogICAgIH0KIApAQCAtMTIwMiw3ICsx
MjAzLDcgQEAgb3AgOmVudW1lcmF0b3JfaW5fYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVBy
b2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUu
KiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAg
fQogCkBAIC0xMjE2LDcgKzEyMTcsNyBAQCBvcCA6ZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5
LAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBF
bnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjQ4LDEyICsxMjQ5LDEyIEBAIG9wIDpp
dGVyYXRvcl9vcGVuLAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAor
ICAgICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBuZXh0UHJv
ZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRp
b25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogVmFsdWVQcm9maWxlLAog
ICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBpdGVyYXRv
clByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9k
ZU1ldGFkYXRhLAotICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0sCiAg
ICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3ltYm9sQ2FsbDogbmlsLApAQCAtMTI3MSwxNCAr
MTI3MiwxNCBAQCBvcCA6aXRlcmF0b3JfbmV4dCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2ln
bmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgbmV4dFJlc3VsdFByb2ZpbGU6
IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBkb25lUHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisg
ICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGl0ZXJhYmxlUHJv
ZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRp
b25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxlLAog
ICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBuZXh0UmVz
dWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgICAgICBkb25lTW9kZU1ldGFkYXRhOiBHZXRC
eUlkTW9kZU1ldGFkYXRhLAotICAgICAgICBkb25lUHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
ICAgICB2YWx1ZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKLSAgICAgICAgdmFs
dWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIG5l
eHRSZXN1bHQ6IEpTVmFsdWUsCkBAIC0xMzIyLDcgKzEzMjMsNyBAQCBvcCA6Z2V0X2ludGVybmFs
X2ZpZWxkLAogICAgICAgICBpbmRleDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF9pbnRlcm5hbF9maWVsZCwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9w
ZXJhbmRzRm9yQ2hlY2twb2ludC5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsMjAgKzU3LDIwIEBAIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9y
SW1wbChCeXRlY28KICAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKICAgICBpZiBj
b25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29wZW4p
IHsKICAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKLSAgICAgICAgY2FzZSBPcEl0
ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuICZtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmls
ZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuICZtZXRhZGF0
YS5tX25leHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxs
OiByZXR1cm4gbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVy
YXRvck9wZW46OmdldE5leHQ6IHJldHVybiBtZXRhZGF0YS5tX25leHRQcm9maWxlOwogICAgICAg
ICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKICAg
ICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBvcF9p
dGVyYXRvcl9uZXh0KSB7CiAgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0gICAg
ICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gJm1ldGFkYXRhLm1f
bmV4dFJlc3VsdFByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6
IHJldHVybiAmbWV0YWRhdGEubV9kb25lUHJvZmlsZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9y
TmV4dDo6Z2V0VmFsdWU6IHJldHVybiAmbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CisgICAgICAg
IGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gbWV0YWRhdGEubV9uZXh0
UmVzdWx0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTogcmV0
dXJuIG1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6
OmdldFZhbHVlOiByZXR1cm4gbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CiAgICAgICAgIGRlZmF1
bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
Ci0gICAgICAgIHJldHVybiAmbWV0YWRhdGEubV9wcm9maWxlOworICAgICAgICByZXR1cm4gbWV0
YWRhdGEubV9wcm9maWxlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFkYXRh
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNiArMzc0LDEwIEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiAKIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAogICAgIEpTU2NvcGUqIHNjb3BlKQogeworICAg
IC8vIFdlIGNhbid0IGZpbmFsaXplIGEgR0Mgd2hpbGUgaW4gaGVyZSBzaW5jZSB3ZSBuZWVkIHRv
IG1ha2Ugc3VyZSB0bworICAgIC8vIG1ha2Ugc3VyZSBvdXIgVmFsdWVQcm9maWxlcyBhbmQgQXJy
YXlQcm9maWxlcyBhbGwgcG9pbnQgdG8gcHJvcGVyIGxvY2F0aW9ucy4KKyAgICBSRUxFQVNFX0FT
U0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7IAorCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIGZpbmlzaENyZWF0aW9uQ29tbW9uKHZtKTsKIApAQCAtNDM1LDcgKzQzOSw4IEBA
IGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAvLyBCb29ra2Vl
cCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hT
ZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25t
ZW50czsKIAotICAgIGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1
Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8mIC8qbWV0YWRhdGEqLykgeworICAgIGF1
dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAv
KmJ5dGVjb2RlKi8sIGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lX3Y8VmFsdWVQcm9maWxlKiwgZGVjbHR5cGUobWV0YWRhdGEubV9wcm9maWxlKT4p
OwogICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgfTsK
IApAQCAtNDk5LDkgKzUwNCw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFMKIAogICAgICAgICBMSU5LKE9wR2V0QnlJZCwgcHJvZmlsZSkKIAotICAgICAgICBMSU5L
KE9wRW51bWVyYXRvck5leHQsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BFbnVtZXJhdG9ySW5C
eVZhbCwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSwg
cHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0KQorICAgICAgICBMSU5LKE9w
RW51bWVyYXRvckluQnlWYWwpCisgICAgICAgIExJTksoT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVy
dHkpCiAgICAgICAgIExJTksoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIHByb2ZpbGUpCiAKICAgICAg
ICAgTElOSyhPcENhbGwsIHByb2ZpbGUpCkBAIC03NjEsNiArNzY2LDY1IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICN1bmRlZiBMSU5LX0ZJRUxECiAjdW5kZWYg
TElOSwogCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZB
cmd1bWVudFZhbHVlUHJvZmlsZXMoKTsgKytpKQorICAgICAgICAgICAgdW5saW5rZWRDb2RlQmxv
Y2stPnZhbHVlUHJvZmlsZShpKS5jbGVhckJ1Y2tldHMoKTsKKworICAgICAgICB1bnNpZ25lZCBp
bmRleCA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7IC8vIFRoZSBmaXJzdCBudW1i
ZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpIHByb2ZpbGVzIGFyZSBhcmd1bWVudCB2YWx1ZSBw
cm9maWxlcworCisgICAgICAgIGlmIChtX21ldGFkYXRhKSB7CisgICAgICAgICAgICBhdXRvIGFz
c2lnbiA9IFsmXSAoVmFsdWVQcm9maWxlKiYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgIHBy
b2ZpbGUgPSAmdW5saW5rZWRDb2RlQmxvY2stPnZhbHVlUHJvZmlsZShpbmRleCsrKTsKKworICAg
ICAgICAgICAgICAgIC8vIFRoZXNlIFZhbHVlUHJvZmlsZXMgY291bGQgYmUgc3RhbGUsIHNpbmNl
IFVubGlua2VkQ29kZUJsb2NrIGRvZXNuJ3QgdmlzaXQKKyAgICAgICAgICAgICAgICAvLyB0aGVt
IGluIGFueSB3YXkuIFNvIHRoZXkgY291bGQgYmUgbHlpbmcgYXJvdW5kIGZyb20gd2hlbiBzb21l
IHByaW9yIENvZGVCbG9jaworICAgICAgICAgICAgICAgIC8vIHdhcyBleGVjdXRpbmcsIGJ1dCBk
aWVkIGFmdGVyIHN0b3JpbmcgdG8gdGhlbS4gU28gdG8gYmUgY29uc2VydmF0aXZlLCB3ZSBjbGVh
cgorICAgICAgICAgICAgICAgIC8vIGFueSB1bnByb2Nlc3NlZCB2YWx1ZXMgbm93LgorICAgICAg
ICAgICAgICAgIHByb2ZpbGUtPmNsZWFyQnVja2V0cygpOworICAgICAgICAgICAgfTsKKworI2Rl
ZmluZSBWSVNJVChfX29wKSBcCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+
KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRhLm1fcHJvZmlsZSk7IH0pOwor
ICAgICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKKyN1
bmRlZiBWSVNJVAorCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JP
cGVuPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IAorICAgICAgICAgICAgICAgIGFzc2lnbihtZXRh
ZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRh
Lm1faXRlcmF0b3JQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9u
ZXh0UHJvZmlsZSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+
Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAg
ICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlKTsKKyAgICAgICAgICAg
ICAgICBhc3NpZ24obWV0YWRhdGEubV9kb25lUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNz
aWduKG1ldGFkYXRhLm1fdmFsdWVQcm9maWxlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXgg
PSAwOworCisgICAgICAgIGF1dG8gYXNzaWduID0gWyZdIChBcnJheVByb2ZpbGUqJiBwcm9maWxl
KSB7CisgICAgICAgICAgICBwcm9maWxlID0gJnVubGlua2VkQ29kZUJsb2NrLT5hcnJheVByb2Zp
bGUoaW5kZXgrKyk7CisKKyAgICAgICAgICAgIC8vIFNlZSBjb21tZW50IGFib3ZlIGFib3V0IHdo
eSB3ZSBjbGVhciBvdXQgc3RhbGUgdmFsdWVzIGluIHZhbHVlIHByb2ZpbGVzLgorICAgICAgICAg
ICAgLy8gV2UgZG8gdGhlIGFuYWxvZ291cyB0aGluZyBoZXJlIGZvciB0aGUgc2FtZSByZWFzb24u
CisgICAgICAgICAgICBwcm9maWxlLT5tX2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOworICAgICAg
ICB9OworCisgICAgICAgIC8vIFdlIG9ubHkgc2hhcmUgYXJyYXkgcHJvZmlsZXMgZm9yIHRoZSBv
cGNvZGVzIGluIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUuCisgICAgICAgIC8v
IFdlIGRvbid0IHlldCBzaGFyZSBhcnJheSBwcm9maWxlcyBmb3IgdGhpbmdzIHdpdGggTExJbnQg
Q2FsbExpbmtJbmZvcy4KKyNkZWZpbmUgVklTSVQoX19vcCkgXAorICAgICAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlKTsgfSk7CisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BS
T0ZJTEUoVklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBhc3Np
Z24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9CisKICAg
ICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aENvbnRyb2xGbG93UHJvZmlsZXJP
cGNvZGVzKCkpCiAgICAgICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZs
b3dQcm9maWxlcigpOwogCkBAIC05MjgsOCArOTkyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNldEFs
dGVybmF0aXZlKFZNJiB2bSwgQwogdm9pZCBDb2RlQmxvY2s6OnNldE51bVBhcmFtZXRlcnModW5z
aWduZWQgbmV3VmFsdWUpCiB7CiAgICAgbV9udW1QYXJhbWV0ZXJzID0gbmV3VmFsdWU7Ci0KLSAg
ICBtX2FyZ3VtZW50VmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4oT3B0
aW9uczo6dXNlSklUKCkgPyBuZXdWYWx1ZSA6IDApOwogfQogCiBDb2RlQmxvY2sqIENvZGVCbG9j
azo6c3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKQpAQCAtMjc3Myw3ICsyODM1LDcgQEAgQXJy
YXlQcm9maWxlKiBDb2RlQmxvY2s6OmdldEFycmF5UHJvZmlsZQogICAgIHN3aXRjaCAoaW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCkpIHsKICNkZWZpbmUgQ0FTRTEoT3ApIFwKICAgICBjYXNlIE9wOjpv
cGNvZGVJRDogXAotICAgICAgICByZXR1cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0
YSh0aGlzKS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIGluc3RydWN0aW9uLT5hczxP
cD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FycmF5UHJvZmlsZTsKIAogI2RlZmluZSBDQVNFMihPcCkg
XAogICAgIGNhc2UgT3A6Om9wY29kZUlEOiBcCkBAIC0yNzg1LDEzICsyODQ3LDYgQEAgQXJyYXlQ
cm9maWxlKiBDb2RlQmxvY2s6OmdldEFycmF5UHJvZmlsZQogI3VuZGVmIENBU0UxCiAjdW5kZWYg
Q0FTRTIKIAotICAgIGNhc2UgT3BHZXRCeUlkOjpvcGNvZGVJRDogewotICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKLSAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgaWYgKG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQotICAgICAgICAg
ICAgcmV0dXJuICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQ
cm9maWxlOwotICAgICAgICBicmVhazsKLSAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtMjkwMCwxOSArMjk1NSwxOSBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRl
QWxsVmFsdWVQcm9maWxlUHJlCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxl
OjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0
cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1w
bGVzSW5Qcm9maWxlcyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAoaXNBcmd1bWVudCkgewot
ICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb2ZpbGUubnVtYmVyT2ZTYW1wbGVz
KCkgfHwgcHJvZmlsZS5pc1NhbXBsZWRCZWZvcmUoKSkKICAgICAgICAgICAgIG51bWJlck9mTGl2
ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwotICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpOwogICAgIH0pOwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcENhdGNoPihbJl0oYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAg
ICAgIGlmIChtZXRhZGF0YS5tX2J1ZmZlcikgewogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
YnVmZmVyLT5mb3JFYWNoKFsmXShWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXImIHByb2Zp
bGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CkBAIC0yOTMxLDEwICsyOTg2LDggQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFZhbHVl
UHJvZmlsZVByZQogCiB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsQXJyYXlQcmVkaWN0aW9ucygp
CiB7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAogICAgIGZv
ckVhY2hBcnJheVByb2ZpbGUoWyZdKEFycmF5UHJvZmlsZSYgcHJvZmlsZSkgewotICAgICAgICBw
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIHRoaXMpOworICAgICAgICBw
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbih0aGlzKTsKICAgICB9KTsKICAgICAKICAg
ICBmb3JFYWNoQXJyYXlBbGxvY2F0aW9uUHJvZmlsZShbJl0oQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZSYgcHJvZmlsZSkgewpAQCAtMzE2NCw3ICszMjE3LDcgQEAgVmFsdWVQcm9maWxlKiBDb2RlQmxv
Y2s6OnRyeUdldFZhbHVlUHJvZgogCiAjZGVmaW5lIENBU0UoT3ApIFwKICAgICBjYXNlIE9wOjpv
cGNvZGVJRDogXAotICAgICAgICByZXR1cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0
YSh0aGlzKS5tX3Byb2ZpbGU7CisgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbi0+YXM8T3A+KCku
bWV0YWRhdGEodGhpcykubV9wcm9maWxlOwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRI
X1ZBTFVFX1BST0ZJTEUoQ0FTRSkKIApAQCAtMzE4MSwxMCArMzIzNCwxMCBAQCBWYWx1ZVByb2Zp
bGUqIENvZGVCbG9jazo6dHJ5R2V0VmFsdWVQcm9mCiAgICAgfQogfQogCi1TcGVjdWxhdGVkVHlw
ZSBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgp
CitTcGVjdWxhdGVkVHlwZSBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRl
Y29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBpZiAoVmFsdWVQ
cm9maWxlKiB2YWx1ZVByb2ZpbGUgPSB0cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlLT5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+Y29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgcmV0dXJuIFNwZWNOb25lOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAy
ODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3NCwxOSArNDc0LDE2IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVk
IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCht
X2FyZ3VtZW50VmFsdWVQcm9maWxlcy5zaXplKCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
bnVtUGFyYW1ldGVycykgfHwgIU9wdGlvbnM6OnVzZUpJVCgpKTsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRWYWx1ZVByb2ZpbGVzLnNpemUoKTsKKyAgICAgICAgcmV0dXJuIG51bVBhcmFtZXRl
cnMoKTsKICAgICB9CiAKICAgICBWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZUZvckFyZ3VtZW50
KHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgpCiAgICAgewotICAgICAgICBBU1NFUlQoT3B0aW9uczo6
dXNlSklUKCkpOyAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHZhcmlvdXMgSklUIGNv
bXBpbGVycyBvciBwbGFjZXMgdGhhdCBmaXJzdCBjaGVjayBudW1iZXJPZkFyZ3VtZW50VmFsdWVQ
cm9maWxlcyBiZWZvcmUgY2FsbGluZyB0aGlzLgotICAgICAgICBWYWx1ZVByb2ZpbGUmIHJlc3Vs
dCA9IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzW2FyZ3VtZW50SW5kZXhdOwotICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2soKS0+dmFsdWVQcm9m
aWxlKGFyZ3VtZW50SW5kZXgpOwogICAgIH0KIAogICAgIFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKLSAgICBTcGVjdWxhdGVkVHlwZSB2
YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBCeXRlY29kZUluZGV4KTsKKyAgICBTcGVjdWxhdGVkVHlwZSB2YWx1ZVByb2ZpbGVQ
cmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaFZhbHVlUHJvZmlsZShjb25zdCBGdW5jdG9y
Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQXJyYXlQcm9m
aWxlKGNvbnN0IEZ1bmN0b3ImKTsKQEAgLTEwMTUsNyArMTAxMiw2IEBAIHByaXZhdGU6CiAgICAg
Ly8gZm9yIERGRyBjb2RlIGJsb2Nrcy4KICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVIb2xkZXIgbV9sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXM7CiAjZW5kaWYKLSAgICBGaXhl
ZFZlY3RvcjxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwogCiAgICAgLy8g
Q29uc3RhbnQgUG9vbAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWdpc3RlcikgPT0gc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIFJlZ2lzdGVyX211c3RfYmVfc2FtZV9zaXplX2Fz
X1dyaXRlQmFycmllcl9Vbmtub3duKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksMjIgKzM5LDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9m
aWxlKGNvbnMKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwK
LSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOworICAgICAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYygqbWV0YWRhdGEubV9w
cm9maWxlLCBmYWxzZSk7IH0pOwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVF
X1BST0ZJTEUoVklTSVQpCiAKICN1bmRlZiBWSVNJVAogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCi0gICAgICAgICAg
ICBmdW5jKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBm
dW5jKG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5j
KG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMoKm1ldGFk
YXRhLm1faXRlcmFibGVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0
YS5tX2l0ZXJhdG9yUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEu
bV9uZXh0UHJvZmlsZSwgZmFsc2UpOwogICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAg
ICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAg
ICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVu
YyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0
YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0
YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEu
bV92YWx1ZVByb2ZpbGUsIGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgfSAgIAogCkBAIC02NCwx
MyArNjQsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2s6OmZv
ckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIHsKICAgICBpZiAobV9tZXRh
ZGF0YSkgewotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1v
ZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQotICAgICAgICAgICAgICAgIGZ1bmMobWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7Ci0gICAg
ICAgIH0pOwotCiAjZGVmaW5lIFZJU0lUMShfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9hcnJheVByb2Zp
bGUpOyB9KTsKKyAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsgZnVuYygqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpOyB9KTsKIAogI2RlZmluZSBWSVNJ
VDIoX19vcCkgXAogICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRh
ZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlKTsgfSk7
CkBAIC04Miw3ICs3Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKGNv
bnMKICN1bmRlZiBWSVNJVDIKIAogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0
b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRh
Lm1faXRlcmFibGVQcm9maWxlKTsKKyAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmFi
bGVQcm9maWxlKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAkocmV2aXNpb24gMjgyMTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCwxMSArNDgsNiBAQCBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0
YVVuc2V0IHsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhVW5z
ZXQpID09IDEyKTsKIAotc3RydWN0IEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCB7Ci0g
ICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKLX07Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihH
ZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGgpID09IDEyKTsKLQogc3RydWN0IEdldEJ5SWRN
b2RlTWV0YWRhdGFQcm90b0xvYWQgewogICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOwogICAg
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKQEAgLTkwLDcgKzg1LDYgQEAgdW5pb24gR2V0
QnlJZE1vZGVNZXRhZGF0YSB7CiAgICAgfTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhRGVmYXVs
dCBkZWZhdWx0TW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5zZXRNb2RlOwot
ICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCBhcnJheUxlbmd0aE1vZGU7CiAgICAg
R2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCBwcm90b0xvYWRNb2RlOwogfTsKIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGEpID09IDE2KTsKQEAgLTExMyw3ICsxMDcs
NiBAQCBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YSB7CiAgICAgdW5pb24gewogICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0TW9kZTsKICAgICAgICAgR2V0QnlJZE1v
ZGVNZXRhZGF0YVVuc2V0IHVuc2V0TW9kZTsKLSAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFy
cmF5TGVuZ3RoIGFycmF5TGVuZ3RoTW9kZTsKICAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVBy
b3RvTG9hZCBwcm90b0xvYWRNb2RlOwogICAgIH07CiAgICAgR2V0QnlJZE1vZGUgbW9kZTsKQEAg
LTEzNyw3ICsxMzAsNiBAQCBpbmxpbmUgdm9pZCBHZXRCeUlkTW9kZU1ldGFkYXRhOjpzZXRVbnNl
CiBpbmxpbmUgdm9pZCBHZXRCeUlkTW9kZU1ldGFkYXRhOjpzZXRBcnJheUxlbmd0aE1vZGUoKQog
ewogICAgIG1vZGUgPSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7Ci0gICAgbmV3ICgmYXJyYXlM
ZW5ndGhNb2RlLmFycmF5UHJvZmlsZSkgQXJyYXlQcm9maWxlOwogICAgIC8vIFByZXZlbnQgdGhl
IHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgogICAgIGhpdENvdW50Rm9yTExJ
bnRDYWNoaW5nID0gMDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMjgy
MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpDb21wcmVzc2Vk
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIoKSB7IH0KIENvbXByZXNzZWRMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUhvbGRlcjo6fkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlcigpIHsgfQogCi12b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRl
cjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlcikKK3ZvaWQgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21w
dXRlVXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAg
aWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9kYXRhLT5zaXplKCk7ICsraSkKLSAgICAgICAgbV9kYXRhLT5hdChpKS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgbV9kYXRhLT5hdChpKS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKIH0KIAogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIENv
bXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKApAQCAtODcsMTMgKzg3
LDEzIEBAIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBMYXp5T3BlcmFuZFZhbHUKIH0KIAogU3Bl
Y3VsYXRlZFR5cGUgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OnByZWRpY3Rpb24oCi0g
ICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIGNvbnN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0CisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKIHsKICAgICBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldElmUHJlc2VudChrZXkpOwogICAgIGlm
ICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIFNwZWNOb25lOwogICAgIAotICAgIHJldHVybiBw
cm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICByZXR1cm4gcHJv
ZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24g
MjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBi
aXRXaWR0aEZvck1heAogICAgIG1hY3JvKE9wRW51bWVyYXRvckdldEJ5VmFsKSBcCiAgICAgbWFj
cm8oT3BFbnVtZXJhdG9ySW5CeVZhbCkgXAogICAgIG1hY3JvKE9wRW51bWVyYXRvckhhc093blBy
b3BlcnR5KSBcCisgICAgbWFjcm8oT3BHZXRCeUlkKSBcCiAKICNkZWZpbmUgRk9SX0VBQ0hfT1BD
T0RFX1dJVEhfQVJSQVlfQUxMT0NBVElPTl9QUk9GSUxFKG1hY3JvKSBcCiAgICAgbWFjcm8oT3BO
ZXdBcnJheSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTYsNCArMzE2LDM1IEBAIGludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5lSnVt
cE9mZnMKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZz
ZXQpOwogfQogCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphbGxvY2F0ZVNoYXJlZFByb2ZpbGVz
KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9tZXRhZGF0YS0+aXNGaW5hbGl6ZWQoKSk7CisK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFsdWVQcm9maWxlcyA9IG51bVBhcmFt
ZXRlcnMoKTsKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKKyNkZWZp
bmUgQ09VTlQoX19vcCkgXAorICAgICAgICAgICAgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzICs9IG1f
bWV0YWRhdGEtPm51bUVudHJpZXM8X19vcD4oKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX1ZBTFVFX1BST0ZJTEUoQ09VTlQpCisjdW5kZWYgQ09VTlQKKyAgICAgICAgICAgIG51
bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JP
cGVuPigpICogMzsKKyAgICAgICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFk
YXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JOZXh0PigpICogMzsKKyAgICAgICAgfQorCisgICAg
ICAgIG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4obnVtYmVyT2ZW
YWx1ZVByb2ZpbGVzKTsKKyAgICB9CisKKyAgICBpZiAobV9tZXRhZGF0YS0+aGFzTWV0YWRhdGEo
KSkgeworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFycmF5UHJvZmlsZXMgPSAwOworCisjZGVm
aW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0
YWRhdGEtPm51bUVudHJpZXM8X19vcD4oKTsKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhf
QVJSQVlfUFJPRklMRShDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAgICBudW1iZXJPZkFycmF5
UHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yTmV4dD4oKTsKKwor
ICAgICAgICBtX2FycmF5UHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxBcnJheVByb2ZpbGU+KG51bWJl
ck9mQXJyYXlQcm9maWxlcyk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR0V4
aXRQcm9maWxlLmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjaW5j
bHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJVbmxpbmtlZE1l
dGFkYXRhVGFibGUuaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJWaXJ0
dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZl
Y3Rvci5oPgpAQCAtMzM0LDYgKzMzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWV0
YWRhdGEtPnNpemVJbkJ5dGVzKCk7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVNoYXJlZFBy
b2ZpbGVzKCk7CiAKIHByb3RlY3RlZDoKICAgICBVbmxpbmtlZENvZGVCbG9jayhWTSYsIFN0cnVj
dHVyZSosIENvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYsIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+KTsKQEAgLTQxOSw2ICs0MjIsOCBAQCBwcml2YXRlOgogICAgIEZpeGVkVmVj
dG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJy
aWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIEZpeGVkVmVjdG9yPFNvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247
CisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJvZmlsZXM7IC8vIFRoZSBm
aXJzdCBudW1QYXJhbWV0ZXJzKCkgYXJlIGFyZ3VtZW50IHByb2ZpbGVzLgorICAgIEZpeGVkVmVj
dG9yPEFycmF5UHJvZmlsZT4gbV9hcnJheVByb2ZpbGVzOwogICAgIHVzaW5nIEZ1bmN0aW9uRXhw
cmVzc2lvblZlY3RvciA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZT4+OwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVj
bHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHByczsKQEAgLTQ1
Niw2ICs0NjEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvdXRPZkxpbmVKdW1wT2Zmc2V0
KGluc3RydWN0aW9uLm9mZnNldCgpKTsKICAgICB9CiAKKyAgICBWYWx1ZVByb2ZpbGUmIHZhbHVl
UHJvZmlsZSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX3ZhbHVlUHJvZmlsZXNbaV07IH0KKyAgICBB
cnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX2FycmF5UHJv
ZmlsZXNbaV07IH0KKwogcHJpdmF0ZToKICAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9
IEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTksNiArMTE5LDcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6
ZmluYWxpegogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29kZUJsb2NrLT5jZWxs
TG9jaygpIH07CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX2luc3RydWN0aW9ucyA9IFdURk1vdmUo
aW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmFsbG9jYXRlU2hhcmVkUHJvZmls
ZXMoKTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1fbWV0YWRhdGEtPmZpbmFsaXplKCk7CiAKICAg
ICAgICAgbV9jb2RlQmxvY2stPm1fanVtcFRhcmdldHMgPSBXVEZNb3ZlKG1fanVtcFRhcmdldHMp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFU
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZE1ldGFkYXRhVGFibGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB+VW5saW5rZWRNZXRhZGF0YVRhYmxlKCk7CiAK
ICAgICB1bnNpZ25lZCBhZGRFbnRyeShPcGNvZGVJRCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEJ5dGVjb2RlPgorICAgIHVuc2lnbmVkIG51bUVudHJpZXMoKTsKIAogICAgIHNpemVfdCBzaXpl
SW5CeXRlcygpOwogCkBAIC02NCw2ICs2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVW5saW5rZWRNZXRhZGF0YVRhYmxlKTsKICAgICB9CiAKKyAgICBib29sIGlz
RmluYWxpemVkKCkgeyByZXR1cm4gbV9pc0ZpbmFsaXplZDsgfQorICAgIGJvb2wgaGFzTWV0YWRh
dGEoKSB7IHJldHVybiBtX2hhc01ldGFkYXRhOyB9CisKIHByaXZhdGU6CiAgICAgZW51bSBFbXB0
eVRhZyB7IEVtcHR5IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAkocmV2aXNp
b24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0
YWRhdGFUYWJsZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTQgQEAgQUxX
QVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRhVAogICAgIHJldHVybiBwcmVwcm9j
ZXNzQnVmZmVyKClbb3Bjb2RlSURdKys7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29k
ZT4KK0FMV0FZU19JTkxJTkUgdW5zaWduZWQgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpudW1FbnRy
aWVzKCkKK3sKKyAgICBjb25zdGV4cHIgYXV0byBvcGNvZGVJRCA9IEJ5dGVjb2RlOjpvcGNvZGVJ
RDsKKyAgICBBU1NFUlQoIW1faXNGaW5hbGl6ZWQgJiYgb3Bjb2RlSUQgPCBzX29mZnNldFRhYmxl
RW50cmllcyAtIDEpOworICAgIHJldHVybiBwcmVwcm9jZXNzQnVmZmVyKClbb3Bjb2RlSURdOwor
fQorCiBBTFdBWVNfSU5MSU5FIHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNpemVJbkJ5
dGVzKCkKIHsKICAgICBpZiAobV9pc0ZpbmFsaXplZCAmJiAhbV9oYXNNZXRhZGF0YSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlz
aW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2Zp
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbmN1cnJl
bnRKU0xvY2suaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC00NSw2
ICs0NiwxMSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgCiAgICAgVmFsdWVQcm9m
aWxlQmFzZSgpCiAgICAgeworICAgICAgICBjbGVhckJ1Y2tldHMoKTsKKyAgICB9CisKKyAgICB2
b2lkIGNsZWFyQnVja2V0cygpCisgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkKICAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KQEAgLTkyLDkgKzk4LDkgQEAgc3Ry
dWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IAotICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
IGxvY2tlcikKKyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oKQogICAgIHsKLSAgICAgICAg
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIGNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbigpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0Owog
ICAgICAgICBvdXQucHJpbnQoInByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG1fcHJlZGlj
dGlvbikpOwpAQCAtMTE4LDEwICsxMjQsMTAgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2Ugewog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIC8vIFVwZGF0ZXMgdGhlIHByZWRpY3Rpb24gYW5k
IHJldHVybnMgdGhlIG5ldyBvbmUuIE5ldmVyIGNhbGwgdGhpcyBmcm9tIGFueSB0aHJlYWQKLSAg
ICAvLyB0aGF0IGlzbid0IGV4ZWN1dGluZyB0aGUgY29kZS4KLSAgICBTcGVjdWxhdGVkVHlwZSBj
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKKyAgICBT
cGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKQogICAgIHsKKyAgICAgICAg
Ly8gTXVsdGlwbGUgdGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2Ft
ZSB0aW1lLgorICAgICAgICAvLyBUaGUgaW1wb3J0IHBhcnQgaXMgdGhhdCB3ZSBkb24ndCBlbmQg
dXAgY29ycnVwdGluZyBhbnkgdmFsdWVzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOwogICAgICAgICAgICAgaWYgKCF2YWx1
ZSkKQEAgLTE1Niw2ICsxNjIsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9m
QnVja2V0CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPiB7CiAgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVX
aXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkZpcnN0QnVja2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZhbHVlUHJvZmlsZSwg
bV9idWNrZXRzWzBdKTsgfQogfTsKIAogc3RydWN0IFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdp
c3RlciA6IHB1YmxpYyBWYWx1ZVByb2ZpbGUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1BcnJheU1vZGUg
QXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIs
IEFycmF5UHJvZmlsZSogcHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWFrZVNh
ZmUpCitBcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoQXJyYXlQcm9maWxlKiBwcm9m
aWxlLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKIHsKICAgICBBcnJheTo6
Q2xhc3Mgbm9uQXJyYXk7Ci0gICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0
dXJlcyhsb2NrZXIpKQorICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVy
ZXMoKSkKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6T3JpZ2luYWxOb25BcnJheTsKICAgICBl
bHNlCiAgICAgICAgIG5vbkFycmF5ID0gQXJyYXk6Ok5vbkFycmF5OwpAQCAtNjMsMjcgKzYzLDI3
IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCAKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgY29udmVydHMgPSBBcnJheTo6QXNJczsKIAotICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKHR5cGUsIGlzQXJyYXksIGNvbnZlcnRzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxv
Y2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUs
IGlzQXJyYXksIGNvbnZlcnRzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZl
KTsKICAgICB9OwogCi0gICAgQXJyYXlNb2RlcyBvYnNlcnZlZCA9IHByb2ZpbGUtPm9ic2VydmVk
QXJyYXlNb2Rlcyhsb2NrZXIpOworICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWQgPSBwcm9maWxlLT5v
YnNlcnZlZEFycmF5TW9kZXMoKTsKICAgICBzd2l0Y2ggKG9ic2VydmVkKSB7CiAgICAgY2FzZSAw
OgogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVbnByb2ZpbGVkKTsKICAgICBjYXNl
IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpOgotICAgICAgICBpZiAo
YWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGxvY2tlcikpCisgICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFw
cm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKICAgICAgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nQXJndW1lbnRzLCBub25BcnJheSwgQXJyYXk6
Ok91dE9mQm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbiku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIG5v
bkFycmF5LCBhY3Rpb24pLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKIAogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdp
dGhVbmRlY2lkZWQpOgogICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSkKICAgICAg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nQXJndW1lbnRzLCBBcnJh
eTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0g
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFycmF5LCBB
cnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tl
ciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpV
bmRlY2lkZWQsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgICAgIAogICAgIGNh
c2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFVuZGVjaWRlZCk6Ci0gICAgICAgIGlmIChh
Y3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMobG9ja2VyKSkKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXBy
b2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdBcmd1bWVudHMsIEFycmF5OjpQb3NzaWJseUFy
cmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pOwotICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBhY3Rpb24p
LndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwor
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBh
Y3Rpb24pLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKIAog
ICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhJbnQz
Mik6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aElu
dDMyKToKQEAgLTExMyw1MCArMTEzLDUwIEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNl
cnZlZChjb25zdCAKICAgICAgICAgcmV0dXJuIGhhbmRsZUNvbnRpZ3VvdXNNb2RlcyhBcnJheTo6
Q29udGlndW91cywgb2JzZXJ2ZWQpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5
cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24p
LndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgog
ICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJh
eVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xv
d1B1dEFycmF5U3RvcmFnZSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIEFycmF5OjpBcnJheSwgQXJyYXk6OkFz
SXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAg
Y2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJh
eVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJh
eVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJh
eTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgQXJyYXk6OkFycmF5LCBBcnJh
eTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2Fz
ZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFn
ZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFn
ZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6
OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJh
eVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRo
UHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1v
ZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAg
ICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlT
dG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlT
dG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xv
d1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5
OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpQb3Nz
aWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CiAgICAgY2FzZSBJbnQ4QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpJbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJv
ZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6SW50OEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFBy
b2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50MTZBcnJheU1vZGU6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDE2QXJyYXksIG5vbkFycmF5LCBBcnJheTo6
QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNl
IEludDMyQXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQzMkFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDMy
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBVaW50OEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6VWludDhBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24p
LndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgVWludDhDbGFtcGVk
QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OENsYW1wZWRB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50
OENsYW1wZWRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQxNkFycmF5TW9kZToKLSAgICAgICAg
cmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDE2QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJ
cywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDE2QXJyYXksIG5vbkFycmF5LCBBcnJheTo6
QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBV
aW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQzMkFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQz
MkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmls
ZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6RmxvYXQzMkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEZsb2F0
NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0NjRBcnJh
eSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJv
ZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDY0
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdJbnQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6QmlnSW50NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFz
SXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgQmln
VWludDY0QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdVaW50
NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tl
ciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpC
aWdVaW50NjRBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIElmIHdlIGhh
dmUgc2VlbiBtdWx0aXBsZSBUeXBlZEFycmF5IHR5cGVzLCBvciBhIFR5cGVkQXJyYXkgYW5kIG5v
bi10eXBlZCBhcnJheSwgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHRyeSB0byBjb252ZXJ0IHRo
ZSBvYmplY3Qgc2luY2UgeW91IGNhbid0IGNvbnZlcnQgdHlwZWQgYXJyYXlzLgogICAgICAgICBp
ZiAob2JzZXJ2ZWQgJiBBTExfVFlQRURfQVJSQVlfTU9ERVMpCi0gICAgICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpHZW5lcmljLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCi0gICAgICAgIGlmICgob2JzZXJ2
ZWQgJiBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KSkgJiYgcHJvZmls
ZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGxvY2tlcikpCi0gICAgICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zKS53aXRoU3BlY3VsYXRp
b25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgaWYgKChv
YnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpKSAmJiBw
cm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKKyAgICAgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMpLndpdGhTcGVjdWxhdGlv
bkZyb21Qcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICAgICAgCiAgICAgICAgIEFycmF5
OjpUeXBlIHR5cGU7CiAgICAgICAgIEFycmF5OjpDbGFzcyBhcnJheUNsYXNzOwpAQCAtMTgzLDcg
KzE4Myw3IEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCAKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgYXJyYXlDbGFzcyA9IEFycmF5OjpQb3NzaWJseUFycmF5Owog
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzLCBBcnJh
eTo6Q29udmVydCwgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZl
KTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBhcnJheUNsYXNzLCBBcnJheTo6Q29u
dmVydCwgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgfQogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJldmlzaW9u
IDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBB
cnJheU1vZGUod29yZCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9i
c2VydmVkKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpB
Y3Rpb24sIGJvb2wgbWFrZVNhZmUpOworICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9ic2VydmVk
KEFycmF5UHJvZmlsZSosIEFycmF5OjpBY3Rpb24sIGJvb2wgbWFrZVNhZmUpOwogICAgIAogICAg
IEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb24oQXJyYXk6OlNwZWN1bGF0aW9uIHNwZWN1bGF0aW9u
KSBjb25zdAogICAgIHsKQEAgLTE5MCwxMyArMTkwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEFycmF5TW9kZSh0eXBlKCksIGFycmF5Q2xhc3MsIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24oKSwgYWN0aW9uKCkpOwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKyAgICBBcnJheU1vZGUgd2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUoQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZl
KSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OlNwZWN1bGF0aW9uIG15U3BlY3VsYXRpb247
CiAKICAgICAgICAgaWYgKG1ha2VTYWZlKQogICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFy
cmF5OjpPdXRPZkJvdW5kczsKLSAgICAgICAgZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hv
bGUobG9ja2VyKSkKKyAgICAgICAgZWxzZSBpZiAocHJvZmlsZS0+bWF5U3RvcmVUb0hvbGUoKSkK
ICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6VG9Ib2xlOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6OkluQm91bmRzOwpAQCAtMjA0LDEz
ICsyMDQsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3Bl
Y3VsYXRpb24pOwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBt
YWtlU2FmZSkgY29uc3QKKyAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoQXJyYXlQcm9maWxlKiBw
cm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAogICAgIHsKICAgICAgICAgQXJyYXk6OkNsYXNz
IG15QXJyYXlDbGFzczsKIAogICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKLSAgICAgICAgICAg
IGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSAmJiBiZW5l
Zml0c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFy
cmF5TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKKyAgICAgICAg
ICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoKSAmJiBiZW5lZml0
c0Zyb21PcmlnaW5hbEFycmF5KCkpIHsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5
TW9kZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMoKTsKICAgICAgICAgICAgICAgICBp
ZiAoaGFzU2VlbkNvcHlPbldyaXRlQXJyYXkoYXJyYXlNb2RlcykgJiYgIWhhc1NlZW5Xcml0YWJs
ZUFycmF5KGFycmF5TW9kZXMpKQogICAgICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBB
cnJheTo6T3JpZ2luYWxDb3B5T25Xcml0ZUFycmF5OwogICAgICAgICAgICAgICAgIGVsc2UgaWYg
KCFoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1vZGVzKSAmJiBoYXNTZWVuV3JpdGFibGVB
cnJheShhcnJheU1vZGVzKSkKQEAgLTIyMiw3ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOwogICAgICAgICAK
LSAgICAgICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0
aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVy
biB3aXRoQXJyYXlDbGFzcyhteUFycmF5Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxl
KHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlIHdpdGhUeXBl
KEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5NSwxMSArODk1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGF1dG8gZ2V0VmFs
dWVQcm9maWxlUHJlZGljdGlvbkZyb21Gb3JDb2RlQmxvY2tBbmRCeXRlY29kZU9mZnNldCA9IFsm
XSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb247Ci0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IGNvZGVCbG9jay0+dmFs
dWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgobG9ja2VyLCBjb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNv
ZGVJbmRleChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgICAgICBhdXRvKiBm
dXp6ZXJBZ2VudCA9IG1fdm0tPmZ1enplckFnZW50KCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoZnV6emVyQWdlbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmdXp6ZXJBZ2VudC0+Z2V0
UHJlZGljdGlvbihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIHByZWRpY3Rpb24pICYgU3BlY0J5dGVj
b2RlVG9wOwpAQCAtOTgzLDEwICs5NzksOSBAQCBwcml2YXRlOgogCiAgICAgQXJyYXlNb2RlIGdl
dEFycmF5TW9kZShBcnJheVByb2ZpbGUmIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQog
ICAgIHsKLSAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrKTsK
LSAgICAgICAgYm9vbCBtYWtlU2FmZSA9IHByb2ZpbGUub3V0T2ZCb3VuZHMobG9ja2VyKTsKLSAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgJnByb2ZpbGUsIGFj
dGlvbiwgbWFrZVNhZmUpOworICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOworICAgICAgICBib29sIG1ha2VT
YWZlID0gcHJvZmlsZS5vdXRPZkJvdW5kcygpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpm
cm9tT2JzZXJ2ZWQoJnByb2ZpbGUsIGFjdGlvbiwgbWFrZVNhZmUpOwogICAgIH0KIAogICAgIE5v
ZGUqIG1ha2VTYWZlKE5vZGUqIG5vZGUpCkBAIC0yMDU4LDkgKzIwNTMsOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pCiAgICAgICAgICAgICAvLyBhcmd1bWVudHMg
cmVjZWl2ZWQgaW5zaWRlIHRoZSBjYWxsZWUuIEJ1dCB0aGF0IHByb2JhYmx5IHdvbid0IG1hdHRl
ciBmb3IgbW9zdAogICAgICAgICAgICAgLy8gY2FsbHMuCiAgICAgICAgICAgICBpZiAoY29kZUJs
b2NrICYmIGFyZ3VtZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKSkgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmls
ZSA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJndW1lbnQpOwotICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGxvY2tlcikpOworICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KHByb2ZpbGUu
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgobnVtU2V0QXJndW1l
bnRzID49IG1hbmRhdG9yeU1pbmltdW0gPyBTZXRBcmd1bWVudE1heWJlIDogU2V0QXJndW1lbnRE
ZWZpbml0ZWx5LCBPcEluZm8odmFyaWFibGUpKTsKQEAgLTYzMDUsNyArNjI5OSw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGlmIChzaG91
bGRDb21waWxlQXNHZXRCeUlkKQogICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNv
ZGUubV9kc3QsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIs
IGdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkLCBuZXh0T3Bjb2RlSW5kZXgoKSk7CiAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0g
Z2V0QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0
QXJyYXlNb2RlKCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBB
cnJheTo6UmVhZCk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGNvbnNpZGVy
IG1ha2luZyB0aGlzIG5vdCB2YXJhcmcsIHNpbmNlIGl0IG9ubHkgdXNlcyB0aHJlZSBjaGlsZAog
ICAgICAgICAgICAgICAgIC8vIHNsb3RzLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTIKQEAgLTcwNzUsMTEgKzcwNjksOSBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBI
YXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKIAogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwotCiAgICAgICAgICAgICAgICAgYnVm
ZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9maWxl
KSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUu
bV9vcGVyYW5kKTsKLSAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2Fs
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVk
aWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CkBAIC03NDMxLDcgKzc0MjMsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7
CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZG9Mb2FkQmxvY2sgPSBhbGxvY2F0ZVVudGFy
Z2V0YWJsZUJsb2NrKCk7CiAKLSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0g
Z2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBBcnJheTo6UmVhZCk7Cisg
ICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRh
dGEubV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBhdXRv
IHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRleCht
X2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CiAKICAg
ICAgICAgICAgICAgICB7CkBAIC04MzI2LDcgKzgzMTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgh
Y29tcGlsZWRBc0luQnlJZCkgewotICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmls
ZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBn
ZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRv
R3JhcGgoSW5CeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGJhc2UsIHByb3BlcnR5
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV92YWwp
OwpAQCAtODQxMCw3ICs4NDAyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfbmV4dDogewogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yTmV4dD4o
KTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0
YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJh
eTo6UmVhZCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7
CiAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGdldChieXRlY29kZS5tX2luZGV4KTsKICAgICAg
ICAgICAgIE5vZGUqIGVudW1lcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKTsKQEAg
LTg0NDIsNyArODQzNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgY2FzZSBvcF9lbnVtZXJhdG9yX2dldF9ieV92YWw6IHsKICAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5
VmFsPigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9k
ZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJy
YXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUs
IEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uID0g
Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KCk7CiAKICAgICAgICAgICAgIE5vZGUqIGJhc2Ug
PSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAgLTg1MDYsNyArODQ5OCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9lbnVtZXJhdG9y
X2luX2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZhbD4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5
OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUo
Km1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFk
ZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFy
Z0NoaWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODUyMSw3ICs4NTEzLDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNl
IG9wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eTogewogICAgICAgICAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+
KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1v
ZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJy
YXk6OlJlYWQpOwogCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9i
YXNlKSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0
eU5hbWUpKTsKQEAgLTg4ODEsNyArODg3Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5VmFsKEJ5dGUKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7Ci0g
ICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OldyaXRlKTsKKyAgICAgICAgQXJy
YXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OldyaXRlKTsKIAogICAgICAgICBhZGRWYXJBcmdD
aGlsZChiYXNlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyODIx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDQyLDkgKzQwNDIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJv
ZmlsZWRCbG9jay0+Z2V0QXJyYXlQcm9maWxlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KCkpOwogICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gQXJyYXlNb2RlKEFycmF5
OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBBcnJheTo6UmVhZCk7CiAgICAgICAgIGlmIChhcnJh
eVByb2ZpbGUpIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmls
ZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlciwgcHJvZmlsZWRCbG9jayk7Ci0gICAgICAgICAgICBhcnJheU1v
ZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChsb2NrZXIsIGFycmF5UHJvZmlsZSwgQXJyYXk6
OlJlYWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKHByb2ZpbGVkQmxvY2spOworICAgICAgICAgICAgYXJyYXlNb2RlID0gQXJyYXlN
b2RlOjpmcm9tT2JzZXJ2ZWQoYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOwogICAg
ICAgICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkgPT0gQXJyYXk6OlVucHJvZmlsZWQpIHsKICAg
ICAgICAgICAgICAgICAvLyBGb3Igbm9ybWFsIGFycmF5IG9wZXJhdGlvbnMsIGl0IG1ha2VzIHNl
bnNlIHRvIHRyZWF0IFVucHJvZmlsZWQKICAgICAgICAgICAgICAgICAvLyBhY2Nlc3NlcyBhcyBG
b3JjZUV4aXQgYW5kIGdldCBtb3JlIGRhdGEgcmF0aGVyIHRoYW4gdXNpbmcKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
MTYgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2so
KS0+bnVtUGFyYW1ldGVycygpID49IDEpOwogICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gV2Ugb25seSBkbyB0aGlzIGZvciB0aGUgYXJndW1lbnRzIGF0IHRo
ZSBmaXJzdCBibG9jay4gVGhlIGFyZ3VtZW50cyBmcm9tCiAgICAgICAgICAgICAvLyBvdGhlciBl
bnRyeXBvaW50cyBoYXZlIGFscmVhZHkgYmVlbiBwb3B1bGF0ZWQgd2l0aCB0aGVpciBwcmVkaWN0
aW9ucy4KICAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9yb290VG9Bcmd1
bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGFyZyA9IDA7IGFyZyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrKCktPm51
bVBhcmFtZXRlcnMoKSk7ICsrYXJnKSB7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9maWxlJiBw
cm9maWxlID0gcHJvZmlsZWRCbG9jaygpLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChhcmcpOwot
ICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJl
ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsNyArMzAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZSguLi4p
OwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVBy
b2ZpbGU+Ojp2YWx1ZSwgdm9pZD4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3Nh
bWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGUqPjo6dmFs
dWUsIHZvaWQ+CiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2Rl
KE9wIGJ5dGVjb2RlKTsKIAogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChSZWdpc3RlcklEIGNlbGxHUFIsIEFycmF5UHJvZmlsZSosIFJlZ2lzdGVySUQgc2NyYXRj
aEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNp
b24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxMiw3ICszMTIsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotaW5saW5lIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPGRlY2x0eXBlKE9wOjpNZXRhZGF0YTo6bV9wcm9maWxl
KSwgVmFsdWVQcm9maWxlPjo6dmFsdWUsIHZvaWQ+IEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpCitpbmxpbmUgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2Zp
bGUqPjo6dmFsdWUsIHZvaWQ+IEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRP
cGNvZGUoT3AgYnl0ZWNvZGUpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVnVDApOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDEwICsxMDI4LDggQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBwdXRCeVZhbE9wdGltaQogICAgICAgICBpZiAoIWlzQ29weU9uV3JpdGUoYmFzZU9i
amVjdC0+aW5kZXhpbmdNb2RlKCkpICYmIHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAg
ICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nR2VuZXJpYyh2bSwgY29kZUJs
b2NrLCBzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9j
ayk7Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKHByb2ZpbGUpCisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIHN0cnVjdHVyZSk7CiAgICAgICAgICAg
ICAgICAgcmVwYXRjaEFycmF5UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8sIFB1dEtpbmQ6Ok5vdERpcmVjdCwgZWNtYU1vZGUp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDk4LDEwICsxMDk2LDggQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBkaXJlY3RQdXRCeVZhbAogICAgIGlmICghaXNDb3B5T25Xcml0
ZShiYXNlT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2NyaXB0LmlzSW50MzIoKSkgewog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7
CiAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nR2VuZXJpYyh2bSwgY29kZUJs
b2NrLCBzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAg
ICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNv
ZGVCbG9jaywgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwcm9m
aWxlKQorICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihj
b2RlQmxvY2ssIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywg
UHV0S2luZDo6RGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDEyLDEw
ICsyNDA4LDggQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5VgogICAg
IGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzSW50MzIoKSkgewogICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZt
KTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBjb2Rl
QmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgIGlmIChwcm9maWxlKSB7Ci0gICAgICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0g
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwg
Y29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBy
b2ZpbGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJlcGF0Y2hBcnJheUdldEJ5VmFs
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZv
KTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92
YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxl
KiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0TG9hZDIoYmFz
ZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKIApAQCAtMjc2LDcgKzI3
Niw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKTsKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgICAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgQXJy
YXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgICAgICBB
cnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgICAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4
XTsKICAgICAgICAgKyttX2dldEJ5VmFsSW5kZXg7CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMs
IHJlZ1QyKTsKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDUsIHJlZ1Q0KTsKQEAgLTUwNSw3ICs1
MDUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJCiAgICAgICAg
IHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKICAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFN
b2RlKGJ5dGVjb2RlKTsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CisgICAgICAgIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKICAgICB9Owog
CiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtNjIyLDExICs2MjIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1CiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCi0gICAg
aWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFBy
b2ZpbGluZygpKSB7Ci0gICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChO
b3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwg
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aCkpKTsKLSAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCAmbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgcmVnVDIp
OwotICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKLSAgICB9CisgICAgaWYg
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpKQorICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIG1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLCByZWdUMik7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKQEAgLTc5Nyw3ICs3OTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29u
c3QgSW5zdHJ1CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQ
cm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0TG9h
ZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwpAQCAtODIwLDcgKzgxNyw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW4KICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
aW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0
IEluc3RyCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9m
aWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmls
ZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVn
VDEpOwpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNl
KGNvbnN0CiAgICAgaWYgKGhhc0FueVNsb3dDYXNlcyhpdGVyKSkgewogICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIHBy
b2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSog
cHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RyCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJCiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKICAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwogICAgICAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcHJvZmlsZSA9IG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC0xMTA4
LDExICsxMTA4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydQog
ICAgIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwog
ICAgIAotICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9
IGJyYW5jaDgoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEubW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6
QXJyYXlMZW5ndGgpKSk7Ci0gICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChy
ZWdUMCwgJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2Zp
bGUsIHJlZ1QxKTsKLSAgICAgICAgbm90QXJyYXlMZW5ndGhNb2RlLmxpbmsodGhpcyk7Ci0gICAg
fQorICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxs
KHJlZ1QwLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgcmVnVDEpOwogCiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIApAQCAtMTUxMSw3ICsxNTA4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydQogICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBy
ZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwpAQCAt
MTUzOCw3ICsxNTM1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJ
bgogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4o
KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9m
aWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgSklUSW5CeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKIApAQCAtMjM5Myw3
ICsyMzkwLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAg
IH0KIAogICAgIHN0YXRpY19hc3NlcnQoVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgPT0g
MSk7Ci0gICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhtZXRhZGF0YUdQUiwgT0JKRUNUX09GRlNF
VE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKG1ldGFkYXRh
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpLCByZWdUMSk7CisgICAg
c3RvcmU2NChyZWdUMCwgQWRkcmVzcyhyZWdUMSwgVmFsdWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0
QnVja2V0KCkpKTsKIAogICAgIHJldCgpOwogCkBAIC0yNDQ5LDcgKzI0NDcsOCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgQ2FsbCBvcGVyYXRpb24gPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
ZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotICAgIGppdC5zdG9yZTY0KHJl
Z1QwLCBBZGRyZXNzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBPQkpFQ1RfT0ZGU0VUT0Yo
TWV0YWRhdGEsIG1fcHJvZmlsZSkpKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkp
LCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgaml0LnN0b3JlNjQocmVnVDAsIEFk
ZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZG
aXJzdEJ1Y2tldCgpKSk7CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJl
clRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKIAogI2lmIENQVShYODZfNjQpCkBA
IC0yODU0LDcgKzI4NTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92
YWwoCiAgICAgVmlydHVhbFJlZ2lzdGVyIGluZGV4ID0gYnl0ZWNvZGUubV9pbmRleDsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlOYW1lID0gYnl0ZWNvZGUubV9wcm9wZXJ0eU5hbWU7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGVudW1lcmF0b3IgPSBieXRlY29kZS5tX2VudW1lcmF0b3I7Ci0g
ICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAg
SnVtcExpc3QgZG9uZUNhc2VzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
Myw3ICsxNTMsNyBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsCiAg
ICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfUFJPRklMRV9WQUxVRSh2YWx1ZSkg
ZG8geyBcCi0gICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9wcm9maWxlLm1f
YnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyAgICAgICAgYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9DQUxM
X0VORF9JTVBMKGNhbGxGcmFtZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgXApAQCAtNzYx
LDcgKzc2MSw3IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEoKICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBw
ZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0YSYgbWV0YWRhdGEpCitz
dGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJbnRHZXRCeUlEKGNvbnN0IEluc3RydWN0aW9uKiBwYywg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0QnlJZE1vZGVNZXRhZGF0
YSYgbWV0YWRhdGEsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTgyNCw4ICs4MjQsOSBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtTExJ
bnRHZXRCeUlEKGNvbnN0CiAgICAgfSBlbHNlIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9X
ICYmIGlzSlNBcnJheShiYXNlVmFsdWUpICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCkgewogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5UHJv
ZmlsZSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5zZXRBcnJheUxlbmd0aE1vZGUoKTsKLSAgICAg
ICAgICAgIG1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVj
dHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOworICAgICAgICAgICAgYXJy
YXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2Nr
KTsKICAgICB9CkBAIC04NDEsNyArODQyLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dldF9ieV9pZAogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
Z2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CiAKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBi
YXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
YmFzZVZhbHVlLCBpZGVudCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEsIG1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlKTsKICAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIApAQCAt
ODU3LDEwICs4NTgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9y
XwogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50
R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRl
cmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCBu
dWxscHRyKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBuZXh0UmVnaXN0ZXIg
PSByZXN1bHQ7Ci0gICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxl
Lm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKQEAgLTg3NywxMCArODc4LDEw
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl8KICAgICBpZiAoIWl0
ZXJhdG9yUmV0dXJuLmlzT2JqZWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIl9zKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQo
cGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlO
YW1lcy0+ZG9uZSwgbWV0YWRhdGEubV9kb25lTW9kZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBp
dGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlOYW1lcy0+ZG9uZSwgbWV0YWRhdGEubV9kb25lTW9k
ZU1ldGFkYXRhLCBudWxscHRyKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBk
b25lUmVnaXN0ZXIgPSByZXN1bHQ7Ci0gICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5t
X2RvbmVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAg
IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS0+bV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKQEAgLTg5
NCwxMCArODk1LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl8K
ICAgICBSZWdpc3RlciYgdmFsdWVSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRl
Y29kZS5tX3ZhbHVlKTsKICAgICBKU1ZhbHVlIGl0ZXJhdG9yUmV0dXJuID0gdmFsdWVSZWdpc3Rl
ci5qc1ZhbHVlKCk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQo
cGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0ucHJvcGVydHlO
YW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1
ZU1vZGVNZXRhZGF0YSwgbnVsbHB0cik7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAg
ICAgdmFsdWVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fdmFsdWVQcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUtPm1fYnVj
a2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQog
CkBAIC0xMDI0LDcgKzEwMjUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5
VmFsKFZNCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0
LnRyeUdldEFzVWludDMySW5kZXgoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gKmluZGV4Owog
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0g
ICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9m
aWxlOworICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOwogCiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKICAgICAg
ICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgewpAQCAtMTQy
OSw3ICsxNDMwLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbAog
ICAgIExMSU5UX0JFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluQnlWYWw+
KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwot
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xv
YmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKSwgZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUpKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jh
c2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksIG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKSkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
aGFzX3ByaXZhdGVfbmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyODIxODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBtYWNybyBtYWtlUmV0dXJuUHJv
ZmlsZWQob3Bjb2RlU3RydWN0LCBnCiAgICAgICAgIG1vdmUgcGF5bG9hZCwgdDAKIAogICAgICAg
ICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1f
cHJvZmlsZSwgdDUsIHQxLCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
bV9wcm9maWxlLCB0NSwgdDEsIHQwLCB0MikKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAg
ICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICAgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCkBAIC04NSw3ICs4NSw3IEBAIG1hY3JvIGRpc3BhdGNo
QWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnUKICAgICBzdG9yZWkgcjEsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQogICAgIHN0b3JlaSByMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIG1l
dGFkYXRhKHNpemUsIG9wY29kZVN0cnVjdCwgdDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIxLCByMCwgdDMpCiAgICAgZGlz
cGF0Y2goKQogCiBlbmQKQEAgLTY3Nyw5ICs2NzcsMTAgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25H
bG9iYWxMZXhpY2FsRW52aXJvbgogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQpCi0g
ICAgc3RvcmVpIHRhZywgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1f
YnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KLSAgICBzdG9yZWkgcGF5bG9hZCwgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0cyArIFBheWxvYWRPZmZz
ZXRbbWV0YWRhdGFdCittYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFt
ZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCwgc2NyYXRjaCkKKyAgICBsb2FkcCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSVbbWV0YWRhdGFdLCBzY3JhdGNoCisgICAgc3Rv
cmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbc2NyYXRjaF0KKyAg
ICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0
W3NjcmF0Y2hdCiBlbmQKIAogCkBAIC0xNDM3LDcgKzE0MzgsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsCiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRh
ZGF0YTo6bV9vZmZzZXRbdDVdLCB0MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
M10sIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVP
ZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwg
bV9wcm9maWxlLCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3Qs
IG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0
QnlJZERpcmVjdFNsb3c6CkBAIC0xNDU4LDM3ICsxNDU5LDI5IEBAIG1hY3JvIHBlcmZvcm1HZXRC
eUlESGVscGVyKG9wY29kZVN0cnVjdCwKICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAogICAg
IGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZh
dWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVP
ZmZzZXQodDEsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQog
CiAub3BHZXRCeUlkUHJvdG9Mb2FkOgotICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1v
ZGU6OlByb3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3RoCisgICAgYmJuZXEgdDEsIGNvbnN0
ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkVW5zZXQKICAgICBsb2FkaSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQogICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJd
LCB0MwogICAgIGJpbmVxIHQzLCB0MSwgc2xvd0xhYmVsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zm
c2V0W3QyXSwgdDEKICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxLCB0MykKICAgICBy
ZXR1cm4odDAsIHQxKQogCi0ub3BHZXRCeUlkQXJyYXlMZW5ndGg6Ci0gICAgYmJuZXEgdDEsIGNv
bnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAotICAgIG1v
dmUgdDMsIHQwCi0gICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1v
ZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUp
Ci0gICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCi0gICAgYnRpeiB0MCwgSW5kZXhpbmdT
aGFwZU1hc2ssIHNsb3dMYWJlbAotICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10s
IHQwCi0gICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1
Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKLSAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwK
LSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgSW50
MzJUYWcsIHQwKQotICAgIHJldHVybihJbnQzMlRhZywgdDApCisjIEl0IGNhbid0IGJlIGFycmF5
IGxlbmd0aCBzaW5jZSB3ZSBkb24ndCB1c2UgdGhpcyBmb3IgYXJiaXRyYXJ5IGdldF9ieV9pZCdz
IHRoYXQgY291bGQKKyMgYWNjZXNzICJsZW5ndGgiLiBXZSBvbmx5IHVzZSBpdCBmb3IgaXRlcmF0
b3Igb3Bjb2RlcyB3aGljaCBhcmVuJ3QgdXNpbmcgImxlbmd0aCIgYXMgYW4KKyMgaWRlbnRpZmll
ci4KICAgICAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MQogICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRh
ZGF0YU5hbWUlLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYmluZXEgdDAsIHQx
LCBzbG93TGFiZWwKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgVW5kZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBVbmRlZmluZWRUYWcsIDAsIHQzKQogICAgIHJldHVybihV
bmRlZmluZWRUYWcsIDApCiAKIGVuZApAQCAtMTUwNiwyMCArMTQ5OSwyMCBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVj
dHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3Q1XSwgdDMKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwg
dDEpCiAKIC5vcEdldEJ5SWRBcnJheUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdl
dEJ5SWRNb2RlOjpBcnJheUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykK
ICAgICBtb3ZlIHQzLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpt
X21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwKQor
ICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIs
IHQ1LCB0MCwgdDEpCiAgICAgYnRpeiB0MiwgSXNBcnJheSwgLm9wR2V0QnlJZFNsb3cKICAgICBi
dGl6IHQyLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkcCBKU09i
amVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAg
YmlsdCB0MCwgMCwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwg
bV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHQwLCB0MykKICAgICByZXR1cm4oSW50MzJUYWcsIHQw
KQogCiAub3BHZXRCeUlkVW5zZXQ6CkBAIC0xNTI3LDcgKzE1MjAsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAgICAgbG9hZGkgT3BHZXRCeUlkOjpNZXRhZGF0
YTo6bV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3Q1XSwgdDEKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5
SWRTbG93KQogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRC
eUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVm
aW5lZFRhZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBV
bmRlZmluZWRUYWcsIDAsIHQzKQogICAgIHJldHVybihVbmRlZmluZWRUYWcsIDApCiAKIC5vcEdl
dEJ5SWREZWZhdWx0OgpAQCAtMTUzNiw3ICsxNTI5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfaWQsIE9wR2V0QgogICAgIGxvYWRpcyBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21v
ZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDVdLCB0MgogICAgIGJpbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRQcm9w
ZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9w
R2V0QnlJZFNsb3c6CkBAIC0xNTQ2LDcgKzE1MzksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZCwgT3BHZXRCCiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NS
RXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMp
Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQorICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCwgdDMpCiAgICAg
cmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTYyNCw3ICsxNjE3LDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gp
CiAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KICAg
ICAgICAgc3RvcmVpIHJlc3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4
XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJU
YWcsIHJlc3VsdFBheWxvYWQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCwgc2NyYXRjaCkKICAgICAgICAgZGlz
cGF0Y2goKQogICAgIGVuZAogCkBAIC0xNjMzLDcgKzE2MjYsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIs
IHNjcmF0Y2gzCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRj
aDEsIDhdCiAgICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0
Y2gxLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwg
c2NyYXRjaDMsIHNjcmF0Y2gyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9w
cm9maWxlLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyLCBzY3JhdGNoMSkKICAgICAgICAgZGlzcGF0
Y2goKQogICAgIGVuZAogCkBAIC0xNjQxLDcgKzE2MzQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgZ2V0KG1fYmFzZSwgdDIpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNs
b3cpCiAgICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRh
dGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQorICAgIGFycmF5UHJvZmlsZShPcEdldEJ5
VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEsIHQzKQogICAgIGdldCht
X3Byb3BlcnR5LCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0
MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCiAgICAgbG9hZHAgSlNPYmplY3Q6Om1f
YnV0dGVyZmx5W3QwXSwgdDMKQEAgLTE2NzgsNyArMTY3MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIC5vcEdldEJ5VmFsTm90RW1wdHk6CiAgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwg
dDIsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0Miwg
dDEsIHQzKQogICAgIGRpc3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToK
QEAgLTE2OTEsNyArMTY4NCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwg
T3BHZXQKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9p
bnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwLCB0MykKICAgICByZXR1cm4ocjEs
IHIwKQogCiBlbmQpCkBAIC0xNzEyLDcgKzE3MDUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9wcml2YXRlX25hbWUsCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEsIC5vcEdldFByaXZhdGVOYW1lU2xvdwogCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwg
bV9wcm9maWxlLCB0NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1l
LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdl
dFByaXZhdGVOYW1lU2xvdzoKQEAgLTE3NzQsNyArMTc2Nyw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKIAogICAgICAgICAub3V0T2ZCb3VuZHM6CiAgICAgICAg
ICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1
Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRPZkJvdW5kcwotICAgICAg
ICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUu
bV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0MgorICAgICAgICAgICAgc3RvcmViIDEsIEFy
cmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0Ml0KICAgICAgICAgICAgIGFkZGkgMSwgdDMs
IHQyCiAgICAgICAgICAgICBzdG9yZWkgdDIsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRl
eGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0KICAgICAgICAgICAgIGptcCAu
c3RvcmVSZXN1bHQKQEAgLTE3ODUsNyArMTc3OSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgZ2V0KG1fYmFzZSwgdDApCiAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlW
YWxTbG93KQogICAgICAgICBtb3ZlIHQxLCB0MgotICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCkKKyAgICAgICAg
YXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQy
LCB0NSwgdDAsIHQzKQogICAgICAgICBnZXQobV9wcm9wZXJ0eSwgdDApCiAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBJbnQzMlRhZywgdDMsIC5vcFB1dEJ5
VmFsU2xvdykKICAgICAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QxXSwgdDAKQEAg
LTE4MzksNyArMTgzMyw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWMKICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0
eToKLSAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVBy
b2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJh
eVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hvbGVbdDFdCiAgICAgICAgIGFkZGkgMSwgQXJyYXlTdG9y
YWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQogICAgICAgICBiaWIgdDMsIC1zaXplb2YgSW5k
ZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0s
IC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKICAgICAgICAgYWRkaSAxLCB0Mywg
dDEKQEAgLTE4NDcsNyArMTg0Miw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWMKICAgICAgICAgam1wIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQK
IAogICAgIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3VuZHNbdDVdCisgICAg
ICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0
MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX291dE9mQm91bmRzW3QxXQogICAg
IC5vcFB1dEJ5VmFsU2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
JW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCkBAIC0yNTE1LDcgKzI1MTEsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgbWFjcm8gZ2V0UHJv
cGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFu
ZFt0NV0sIHQzCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDMsIHQwLCB0
MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0
NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmls
ZSwgdDUsIHQxLCB0MiwgdDMpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAg
LTI1MjQsNyArMjUyMCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUs
IE8KICAgICAgICAgbG9hZHAgVGFnT2Zmc2V0W3QwXSwgdDEKICAgICAgICAgbG9hZHAgUGF5bG9h
ZE9mZnNldFt0MF0sIHQyCiAgICAgICAgIHRkekNoZWNrSWZOZWNlc3NhcnkodDEpCi0gICAgICAg
IHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQorICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0Miwg
dDMpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKQEAgLTI1MzIsNyArMjUyOCw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAgICAgICAgbG9h
ZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBs
b2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMgKyBUYWdPZmZzZXRbdDAsIHQzLCA4
XSwgdDEKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzICsgUGF5
bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9t
U2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQzKQogICAgICAgICByZXR1cm4odDEs
IHQyKQogICAgIGVuZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjgyMTgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTY4LDE1ICs2OCwxNiBAQCBtYWNybyBtYWtlUmV0dXJuUHJvZmlsZWQob3Bj
b2RlU3RydWN0LCBnCiAgICAgZm4obWFjcm8gKHZhbHVlKQogICAgICAgICBtb3ZlIHZhbHVlLCB0
MwogICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBtX3Byb2ZpbGUsIHQxLCB0MywgdDIpCiAgICAgICAgIGdldChtX2RzdCwgdDEpCiAgICAg
ICAgIHN0b3JlcSB0MywgW2NmciwgdDEsIDhdCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQp
CiBlbmQKIAotbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1l
dGFkYXRhLCB2YWx1ZSkKLSAgICBzdG9yZXEgdmFsdWUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHNbbWV0YWRhdGFdCittYWNybyB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVlLCBzY3JhdGNoKQorICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJVttZXRhZGF0YV0s
IHNjcmF0Y2gKKyAgICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0
Y2hdCiBlbmQKIAogIyBBZnRlciBjYWxsaW5nLCBjYWxsaW5nIGJ5dGVjb2RlIGlzIGNsYWltaW5n
IGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQuCkBAIC04Nyw3ICs4OCw3IEBAIG1hY3JvIGRp
c3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnUKICAgICBnZXQoc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHQxKQogICAgIHN0b3JlcSByMCwgW2NmciwgdDEsIDhd
CiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDEpCi0gICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwKQorICAgIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCwgdDMpCiAgICAgZGlz
cGF0Y2goKQogZW5kCiAKQEAgLTE1MDksNyArMTUxMCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X2lkX2RpcmVjdCwKICAgICBiaW5lcSB0MCwgdDEsIC5vcEdldEJ5SWREaXJlY3RT
bG93CiAgICAgbG9hZGkgT3BHZXRCeUlkRGlyZWN0OjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0
MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCkKKyAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJu
KHQwKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE1MTgsNyArMTUxOSw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKIGVuZCkKIAogIyBUaGUgYmFzZSBv
YmplY3QgaXMgZXhwZWN0ZWQgaW4gdDMKLW1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29k
ZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xhYmVsLCBz
aXplLCBtZXRhZGF0YSwgcmV0dXJuKQorbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2Rl
U3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93TGFiZWwsIHNp
emUsIG1ldGFkYXRhLCByZXR1cm4sIGRvQXJyYXlQcm9maWxlKQogICAgIG1ldGFkYXRhKHQyLCB0
MSkKICAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1l
JS5tb2RlW3QyXSwgdDEKIApAQCAtMTUyOSw3ICsxNTMwLDcgQEAgbWFjcm8gcGVyZm9ybUdldEJ5
SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCiAgICAg
bG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1
bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZFByb3Rv
TG9hZDoKQEAgLTE1NDAsMjcgKzE1NDEsMjcgQEAgbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIo
b3Bjb2RlU3RydWN0LAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2Fk
TW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkQXJyYXlMZW5n
dGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5v
cEdldEJ5SWRVbnNldAogICAgIG1vdmUgdDMsIHQwCi0gICAgYXJyYXlQcm9maWxlKCVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3RoTW9kZS5hcnJh
eVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgZG9BcnJheVByb2ZpbGUodDAsIHQyLCB0NSwgdDEp
CiAgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCiAgICAgYnRpeiB0MCwgSW5kZXhpbmdT
aGFwZU1hc2ssIHNsb3dMYWJlbAogICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0
dGVyZmx5W3QzXSwgdDAsIHQxKQogICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJ
bmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCiAgICAgYmlsdCB0
MCwgMCwgc2xvd0xhYmVsCiAgICAgb3JxIG51bWJlclRhZywgdDAKLSAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4o
dDApCiAKIC5vcEdldEJ5SWRVbnNldDoKICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDNdLCB0MQogICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0
YU5hbWUlLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYmluZXEgdDAsIHQxLCBz
bG93TGFiZWwKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgVmFsdWVVbmRlZmluZWQpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVkLCB0MSkKICAgICByZXR1cm4oVmFsdWVV
bmRlZmluZWQpCiAKIGVuZApAQCAtMTU2OCw3ICsxNTY5LDEwIEBAIGVuZAogbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fYmFzZSwgdDApCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKLSAgICBwZXJm
b3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQsIG1fbW9kZU1ldGFkYXRhLCBtX3Byb2ZpbGUsIC5v
cEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIHBlcmZvcm1HZXRCeUlE
SGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNs
b3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4sCisgICAgICAgIG1hY3JvIChjZWxsQW5kSW5kZXhp
bmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgICAgICAgICAgYXJyYXlQ
cm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCBjZWxsQW5kSW5kZXhp
bmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgICAgICBlbmQpCiAKIC5v
cEdldEJ5SWRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9p
ZCkKQEAgLTE1NzcsNyArMTU4MSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lk
LCBPcEdldEIKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJu
UG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMCwgdDMpCiAgICAgcmV0dXJuKHIwKQogCiBlbmQp
CkBAIC0xNjk4LDcgKzE3MDIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0CiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQogICAgICAg
ICBnZXQobV9kc3QsIHNjcmF0Y2gpCiAgICAgICAgIHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0
Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBy
ZXN1bHQpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBy
ZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAtMTcxOSw3
ICsxNzIzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93
KQogCiAgICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRh
dGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQorICAgIGFycmF5UHJvZmlsZShPcEdldEJ5
VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEsIHQzKQogCiAgICAgZ2V0
KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0
MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE3NTksNyArMTc2Myw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIAogLm9wR2V0QnlWYWxEb25lOgogICAgIHN0
b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJv
ZmlsZSwgdDUsIHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1
LCB0MiwgdDMpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdl
OgpAQCAtMTc3Miw3ICsxNzc2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Q
b2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjApCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHIwLCB0MykKICAgICByZXR1cm4ocjApCiAKIGVu
ZCkKQEAgLTE3OTQsNyArMTc5OCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZh
dGVfbmFtZSwKIAogICAgIGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNl
dFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQot
ICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQyLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0MiwgdDAsIHQzKQog
ICAgIHJldHVybih0MCkKIAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTg5Nyw3ICsxOTAx
LDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogCiAgICAgICAg
IC5vdXRPZkJvdW5kczoKICAgICAgICAgICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRC
eVZhbE91dE9mQm91bmRzCi0gICAgICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICAgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQyCisg
ICAgICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQog
ICAgICAgICAgICAgYWRkaSAxLCB0MywgdDIKICAgICAgICAgICAgIHN0b3JlaSB0MiwgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QwXQogICAgICAgICAgICAgam1wIC5zdG9yZVJlc3VsdApAQCAtMTkwNyw3ICsxOTEyLDcgQEAg
bWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAgICAg
ICAgbW92ZSB0MSwgdDIKICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQotICAgICAgICBhcnJheVBy
b2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0
MCkKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQzKQogICAgICAgICBnZXQobV9wcm9wZXJ0eSwgdDApCiAg
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MCwgdDMsIC5vcFB1dEJ5
VmFsU2xvdykKICAgICAgICAgc3hpMnEgdDMsIHQzCkBAIC0xOTYyLDcgKzE5NjcsOCBAQCBtYWNy
byBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGRpc3BhdGNoKCkK
IAogICAgIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHk6Ci0gICAgICAgIHN0b3JlYiAxLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVb
dDVdCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2Zp
bGVbdDVdLCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9I
b2xlW3QxXQogICAgICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rv
clt0MF0KICAgICAgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdI
ZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQdXRCeVZhbEFycmF5U3RvcmFn
ZVN0b3JlUmVzdWx0CiAgICAgICAgIGFkZGkgMSwgdDMsIHQxCkBAIC0xOTcwLDcgKzE5NzYsOCBA
QCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGptcCAu
b3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAKICAgICAub3BQdXRCeVZhbE91dE9m
Qm91bmRzOgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Fy
cmF5UHJvZmlsZS5tX291dE9mQm91bmRzW3Q1XQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAgc3RvcmViIDEsIEFy
cmF5UHJvZmlsZTo6bV9vdXRPZkJvdW5kc1t0MV0KICAgICAub3BQdXRCeVZhbFNsb3c6CiAgICAg
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAg
ZGlzcGF0Y2goKQpAQCAtMjY2Miw3ICsyNjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfZnJvbV9zY29wZSwgTwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9hZHAg
T3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MCwgdDIpCi0gICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgICAgICByZXR1cm4o
dDIpCiAgICAgZW5kCiAKQEAgLTI2NzAsMTQgKzI2NzcsMTQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0
YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQwCiAgICAgICAgIGxvYWRxIFt0MF0sIHQwCiAgICAgICAg
IHRkekNoZWNrSWZOZWNlc3NhcnkodDApCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21T
Y29wZSwgbV9wcm9maWxlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21T
Y29wZSwgbV9wcm9maWxlLCB0NSwgdDAsIHQzKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5k
CiAKICAgICBtYWNybyBnZXRDbG9zdXJlVmFyKCkKICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2Nv
cGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MQogICAgICAgICBsb2FkcSBKU0xleGljYWxF
bnZpcm9ubWVudF92YXJpYWJsZXNbdDAsIHQxLCA4XSwgdDAKLSAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCiAgICAgICAgIHJldHVybih0
MCkKICAgICBlbmQKIApAQCAtMzAwMiw3ICszMDA5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9pdGVyYXRvcl9vcGVuLCBPcAogCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9pdGVyYXRvciwg
dDMpCiAgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5l
eHRTbG93Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1l
dGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBz
aXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisgICAgcGVyZm9ybUdldEJ5SURI
ZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRl
cmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5k
RGlzcGF0Y2gsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLml0ZXJhdG9yT3BlbkdlbmVyaWNH
ZXROZXh0U2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9v
cGVuX2dldF9uZXh0KQpAQCAtMzA2MSw3ICszMDY4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9pdGVyYXRvcl9uZXh0LCBPcAogCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMp
CiAgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAuZ2V0RG9uZVNsb3cKLSAgICBwZXJmb3JtR2V0
QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9m
aWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dldFZh
bHVlKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2Rl
TWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0
b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLmdldERv
bmVTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRf
Z2V0X2RvbmUpCkBAIC0zMDg2LDcgKzMwOTMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0
ZXJhdG9yX25leHQsIE9wCiAgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRtcCBzaW5jZSB0
aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4KICAgICBsb2FkVmFyaWFi
bGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhl
IGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUgdGhyb3du
IGFuIGVycm9yIGJlZm9yZS4KLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4
dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNp
emUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisgICAgcGVyZm9ybUdldEJ5SURI
ZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRhdGEsIG1fdmFsdWVQcm9maWxl
LCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVWYWx1ZUFuZERpc3BhdGNoLCBt
YWNybyhhLCBiLCBjLCBkKSBlbmQpCiAKIC5nZXRWYWx1ZVNsb3c6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCkBAIC0zMTU5LDcgKzMx
NjYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2VudW1lcmF0b3JfZ2V0X2J5CiAgICAgbG9h
ZHEgY29uc3RleHByICgob2Zmc2V0SW5CdXR0ZXJmbHkoZmlyc3RPdXRPZkxpbmVPZmZzZXQpKSAq
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpW3QwLCB0MiwgOF0sIHQyCiAKIC5kb25lOgotICAgIHZh
bHVlUHJvZmlsZShPcEVudW1lcmF0b3JHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIpCisgICAg
dmFsdWVQcm9maWxlKE9wRW51bWVyYXRvckdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDMp
CiAgICAgcmV0dXJuKHQyKQogCiAuZ2V0U2xvd1BhdGg6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAy
ODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyODQsMTEgKzEyODQsMTIgQEAgbWFjcm8gZ2V0dGVy
U2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTgogICAgIGxvYWRpIExMSW50UmV0dXJuUENbY2Zy
XSwgUEMKIGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdU
eXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKK21hY3JvIGFycmF5UHJvZmlsZShvZmZzZXQsIGNlbGxB
bmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgY29uc3Qg
Y2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKICAgICBjb25zdCBpbmRleGluZ1R5cGUgPSBjZWxs
QW5kSW5kZXhpbmdUeXBlIAotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwg
c2NyYXRjaAotICAgIHN0b3JlaSBzY3JhdGNoLCBvZmZzZXQgKyBBcnJheVByb2ZpbGU6Om1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRFttZXRhZGF0YV0KKyAgICBsb2FkcCBvZmZzZXRbbWV0YWRhdGFdLCBz
Y3JhdGNoMgorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc2NyYXRjaDEK
KyAgICBzdG9yZWkgc2NyYXRjaDEsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlE
W3NjcmF0Y2gyXQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRNaXNjW2NlbGxd
LCBpbmRleGluZ1R5cGUKIGVuZAogCkBAIC0xNjEyLDggKzE2MTMsOCBAQCBtYWNybyBmdW5jdGlv
bkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAgICAgYWRkcCAtcHJvZmlsZUFyZ1NraXAsIHQw
ICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCiAgICAgYXNz
ZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAwLCBvayBlbmQpCiAgICAgYnRweiB0MCwgLmFyZ3Vt
ZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2Zp
bGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3Qx
XSwgdDMKLSAgICBidHB6IHQzLCAuYXJndW1lbnRQcm9maWxlRG9uZSAjIFdoZW4gd2UgY2FuJ3Qg
SklULCB3ZSBkb24ndCBhbGxvY2F0ZSBhbnkgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMuCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0MV0sIHQzCisgICAgbG9hZHAgVW5saW5r
ZWRDb2RlQmxvY2s6Om1fdmFsdWVQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBS
ZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0M10sIHQzCiAgICAgbXVscCBzaXplb2YgVmFsdWVQcm9m
aWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQogICAgIGxz
aGlmdHAgMywgdDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3VtZW50cyBvbiB0aGUgc3Rh
Y2suCiAgICAgYWRkcCB0MiwgdDMgIyBwb2ludGVyIHRvIGVuZCBvZiBWYWx1ZVByb2ZpbGUgYXJy
YXkgaW4gQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcy4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rl
U2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsOCArMzcsNyBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNlKENvZGVCCiAg
ICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb2RlQmxvY2stPm51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkgewot
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJn
dW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbihsb2NrZXIpOworICAgICAgICBDU3RyaW5nIGRlc2Ny
aXB0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChpKS5icmllZkRlc2Ny
aXB0aW9uKCk7CiAgICAgICAgIGlmICghZGVzY3JpcHRpb24ubGVuZ3RoKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgb3V0LnJlc2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MTYsNiArMTkxNiw5IEBAIHB1YmxpYzoKIAogICAgIFVubGlua2VkQ29kZUJsb2Nr
OjpSYXJlRGF0YSogcmFyZURhdGEoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9y
YXJlRGF0YS5kZWNvZGUoZGVjb2Rlcik7IH0KIAorICAgIHVuc2lnbmVkIG51bVZhbHVlUHJvZmls
ZXMoKSBjb25zdCB7IHJldHVybiBtX251bVZhbHVlUHJvZmlsZXM7IH0KKyAgICB1bnNpZ25lZCBu
dW1BcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1BcnJheVByb2ZpbGVzOyB9CisK
IHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1
YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CkBAIC0xOTQ3LDYgKzE5NTAsOSBAQCBwcml2YXRl
OgogICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzOwog
CisgICAgdW5zaWduZWQgbV9udW1WYWx1ZVByb2ZpbGVzOworICAgIHVuc2lnbmVkIG1fbnVtQXJy
YXlQcm9maWxlczsKKwogICAgIENhY2hlZE1ldGFkYXRhVGFibGUgbV9tZXRhZGF0YTsKIAogICAg
IENhY2hlZFB0cjxDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YT4gbV9yYXJlRGF0YTsKQEAgLTIxNTIs
NiArMjE1OCw4IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2UKICAg
ICAsIG1fbWV0YWRhdGEoY2FjaGVkQ29kZUJsb2NrLm1ldGFkYXRhKGRlY29kZXIpKQogICAgICwg
bV9pbnN0cnVjdGlvbnMoY2FjaGVkQ29kZUJsb2NrLmluc3RydWN0aW9ucyhkZWNvZGVyKSkKIAor
ICAgICwgbV92YWx1ZVByb2ZpbGVzKGNhY2hlZENvZGVCbG9jay5udW1WYWx1ZVByb2ZpbGVzKCkp
CisgICAgLCBtX2FycmF5UHJvZmlsZXMoY2FjaGVkQ29kZUJsb2NrLm51bUFycmF5UHJvZmlsZXMo
KSkKICAgICAsIG1fcmFyZURhdGEoY2FjaGVkQ29kZUJsb2NrLnJhcmVEYXRhKGRlY29kZXIpKQog
ewogfQpAQCAtMjMyMiw2ICsyMzMwLDggQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVC
bG9jazxDb2RlQgogICAgIG1fbnVtVmFycyA9IGNvZGVCbG9jay5tX251bVZhcnM7CiAgICAgbV9u
dW1DYWxsZWVMb2NhbHMgPSBjb2RlQmxvY2subV9udW1DYWxsZWVMb2NhbHM7CiAgICAgbV9udW1Q
YXJhbWV0ZXJzID0gY29kZUJsb2NrLm1fbnVtUGFyYW1ldGVyczsKKyAgICBtX251bVZhbHVlUHJv
ZmlsZXMgPSBjb2RlQmxvY2subV92YWx1ZVByb2ZpbGVzLnNpemUoKTsKKyAgICBtX251bUFycmF5
UHJvZmlsZXMgPSBjb2RlQmxvY2subV9hcnJheVByb2ZpbGVzLnNpemUoKTsKICAgICBtX2ZlYXR1
cmVzID0gY29kZUJsb2NrLm1fZmVhdHVyZXM7CiAgICAgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyA9
IGNvZGVCbG9jay5tX2xleGljYWxTY29wZUZlYXR1cmVzOwogICAgIG1fcGFyc2VNb2RlID0gY29k
ZUJsb2NrLm1fcGFyc2VNb2RlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgUFJPRklMRV9WQUxVRV9J
Tih2YWx1ZV9fLCBtX3Byb2ZpbGUpCiAKICNkZWZpbmUgUFJPRklMRV9WQUxVRV9JTih2YWx1ZSwg
cHJvZmlsZU5hbWUpIGRvIHsgXAotICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
LnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7IFwKKyAg
ICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS0+bV9idWNrZXRz
WzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiBz
dGF0aWMgdm9pZCB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCkBAIC04ODcsNyArODg3LDcgQEAg
QUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0bwogICAgIEpTQ2VsbCogaXRl
cmFibGUgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYWJsZSkuanNWYWx1ZSgpLmFzQ2VsbCgpOwogICAg
IGlmIChhdXRvIGFycmF5SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+
KHZtLCBpdGVyYXRvcikpIHsKICAgICAgICAgaWYgKGF1dG8gYXJyYXkgPSBqc0R5bmFtaWNDYXN0
PEpTQXJyYXkqPih2bSwgaXRlcmFibGUpKSB7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJh
YmxlUHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOworICAg
ICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChh
cnJheS0+c3RydWN0dXJlSUQoKSk7CiAKICAgICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmF0aW9u
TWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9k
ZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CiAgICAgICAgICAgICBhdXRvJiBpbmRleFNs
b3QgPSBhcnJheUl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6
OkluZGV4KTsKQEAgLTk5Myw3ICs5OTMsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgo
c2xvd19wYXRoX2VuCiAgICAgQVNTRVJUKCFiYXNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7
CiAgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNl
cnZlU3RydWN0dXJlSUQoYmFzZS0+c3RydWN0dXJlSUQoKSk7CisgICAgbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlLT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAg
IEpTU3RyaW5nKiBuYW1lID0gZW51bWVyYXRvci0+Y29tcHV0ZU5leHQoZ2xvYmFsT2JqZWN0LCBi
YXNlLCBpbmRleCwgbW9kZSk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CkBAIC0xMDE5LDcgKzEw
MTksNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAgICAgc3dp
dGNoIChtb2RlKSB7CiAgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRN
b2RlOiB7CiAgICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAg
ICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlE
KCkpOwogICAgICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpKTsKICAgICB9CiAgICAgY2FzZSBKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGU6IHsKQEAgLTEwMzQsNyArMTAzNCw3
IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW4KIAogICAgIGNhc2Ug
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpHZW5lcmljTW9kZTogewogICAgICAgICBpZiAoYmFz
ZVZhbHVlLmlzQ2VsbCgpICYmIG1vZGUgIT0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25T
dHJ1Y3R1cmVNb2RlKQotICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2
ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAg
ICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBh
c1N0cmluZyhHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eU5hbWUpLmpzVmFsdWUoKSk7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBKU0NfREVG
SU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAgICAgfQogCiAgICAgSlNTdHJpbmcq
IHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgp
KTsKLSAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2Jh
bE9iamVjdCwgYmFzZVZhbHVlLCBzdHJpbmcsICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsK
KyAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9i
amVjdCwgYmFzZVZhbHVlLCBzdHJpbmcsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOwogfQog
CiBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293
bl9wcm9wZXJ0eSkK
</data>
<flag name="commit-queue"
          id="461067"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437938</attachid>
            <date>2021-09-10 20:13:10 -0700</date>
            <delta_ts>2021-09-13 15:46:28 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>150414</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOCBA
QAorMjAyMS0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMgZm9yIG5vbi1jYWxsIG9wY29kZXMgaW50bworICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jay4gVGhpcyB3YXksIHRoZSBkYXRhIGlzIHNoYXJlZCBiZXR3
ZWVuIHRoZSBsaW5rZWQgQ29kZUJsb2NrcworICAgICAgICBvZiB0aGUgc2FtZSBVbmxpbmtlZENv
ZGVCbG9jay4gVGhlIHByb2ZpbGluZyBiZXQgaGVyZSBpcyB0aGF0IHdoZW4gdGhlIHNhbWUgY29k
ZQorICAgICAgICBydW5zIGluIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QsIGl0IGxhcmdlbHkg
cnVucyBpbiB0aGUgc2FtZSB3YXkuIFdlJ3ZlIG1hZGUKKyAgICAgICAgdGhpcyBzYW1lIGJldCBp
biBvdGhlciB3YXlzIHdpdGggb3VyIHByb2ZpbGluZywgYW5kIGl0IGxhcmdlbHkgbWFrZXMgc2Vu
c2UKKyAgICAgICAgdG8gZG8gZm9yIFZhbHVlUHJvZmlsZSBhbmQgQXJyYXlQcm9maWxlIHNpbmNl
IHRoZXkgYm90aCBob2xkIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaW5kZXBlbmRlbnQgZGF0YS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBpdCBzbyB3ZSBubyBsb25n
ZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAgICBwcm9jZXNzaW5nIFZhbHVl
UHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxvdyBtdWx0aXBsZSBjb21waWxl
cgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNoIG90aGVyIHdoZW4gdXBkYXRp
bmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAgICAgSXQgbWF5IGVuZCB1cCB3
aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1dCBpdCB3b24ndCBjb3JydXB0
IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gbWFrZXMgaXQgc28gdGhh
dCB3ZSB2aXNpdCBhbGwgQ29kZUJsb2NrcyB0byBmaW5hbGl6ZSBkdXJpbmcKKyAgICAgICAgR0Ms
IHNpbmNlIHRoZXkgbm93IHNoYXJlIHByb2ZpbGVzIHRvZ2V0aGVyLCBpdCdzIG5vIGxvbmdlciBz
dWZmaWNpZW50IHRvIGp1c3QKKyAgICAgICAgZmluYWxpemUgQ29kZUJsb2NrcyB0aGF0IGhhcyB2
aXNpdENoaWxkcmVuIGNhbGxlZCBvbiB0aGVtLiBGb3IgZXhhbXBsZSwgY29uc2lkZXIKKyAgICAg
ICAgYW4gVW5saW5rZWRDb2RlQmxvY2sgVUNCIGFuZCB0d28gQ29kZUJsb2NrcyB0aGF0IHBvaW50
IHRvIGl0LCBDQjEgYW5kIENCMi4KKyAgICAgICAgTGV0J3Mgc2F5IENCMSBpcyBpbiBvbGQgc3Bh
Y2UsIGFuZCBDQjIgaXMgaW4gbmV3IHNwYWNlLiBDQjEgZG9lc24ndCBydW4uIEJ1dAorICAgICAg
ICBDQjIgcnVucywgYW5kIGRvZXMgc29tZSBwcm9maWxpbmcsIHRoZW4gZGllcy4gTm93IENCMSBw
b2ludHMgdG8gc29tZSBuZXcgdmFsdWUKKyAgICAgICAgcHJvZmlsZWQgdmFsdWVzLiBJdCdzIG5v
dCBkZWFkLCBidXQgaXQgYWxzbyB3YXNuJ3QgdmlzaXRlZC4gVGhlcmVmb3JlIHdlIHdvbid0Cisg
ICAgICAgIGZpbmFsaXplIGl0LCBhbmQgY291bGQgVUFGIHRoZSB2YWx1ZXMgaW4gdGhlIHByb2Zp
bGUgaWYgd2UgZGlkbid0IGZpbmFsaXplIGl0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRj
aCBhbHNvIG1ha2VzIGl0IHNvIHRoYXQgaW5zaWRlIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24s
IHdlIGZpbmlzaAorICAgICAgICBsaW5raW5nIGJlZm9yZSB3ZSBkbyBhbnl0aGluZyB0aGF0IGNh
biB0aHJvdyBhbiBleGNlcHRpb24uIEl0J3Mgbm90IHZhbGlkIHRvCisgICAgICAgIGZpbmFsaXpl
IGEgQ29kZUJsb2NrIHRoYXQgaXNuJ3QgbGlua2VkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBp
cyBtZWFzdXJlZCBhcyBhIDElIHNwZWVkdXAgb24gU3BlZWRvbWV0ZXIyLgorCisgICAgICAgICog
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpj
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmJy
aWVmRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3Jp
cHRpb25XaXRob3V0VXBkYXRpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5o
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVkQXJyYXlNb2RlcyBjb25zdCk6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2Vz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjptYXlTdG9yZVRvSG9sZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b3V0T2ZCb3VuZHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50Lmg6CisgICAgICAgIChKU0M6OnZhbHVl
UHJvZmlsZUZvckltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNldE51bVBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldEFy
cmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRlQWxsVmFsdWVQcm9m
aWxlUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp0
cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZB
cmd1bWVudFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJv
ZmlsZUZvckFyZ3VtZW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmlsZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZE1ldGFkYXRhLmg6CisgICAgICAgIChKU0M6OkdldEJ5SWRNb2RlTWV0YWRhdGE6
OnNldEFycmF5TGVuZ3RoTW9kZSk6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMpOgorICAgICAgICAoSlNDOjpM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJlZGljdGlvbiBjb25zdCk6CisgICAgICAg
ICogYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxl
OjpudW1FbnRyaWVzKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6dmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmVu
c3VyZVZhbHVlUHJvZmlsZXMpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZW5z
dXJlQXJyYXlQcm9maWxlcyk6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6Cisg
ICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OlZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAg
ICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjbGVhckJ1Y2tldHMpOgorICAgICAgICAoSlNDOjpW
YWx1ZVByb2ZpbGVCYXNlOjpicmllZkRlc2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6VmFsdWVQ
cm9maWxlQmFzZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6VmFs
dWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlN
b2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OmZyb21PYnNlcnZlZCk6Cisg
ICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9k
ZTo6d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6
OkFycmF5TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRp
Y3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmdldEFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eVZhbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aCk6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UHJlZGljdGlvbkluamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAg
ICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OnB1dEJ5VmFsT3B0aW1pemUpOgorICAgICAgICAoSlNDOjpk
aXJlY3RQdXRCeVZhbE9wdGltaXplKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6Z2VuZXJh
dGVHZXRCeVZhbFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmspOgorICAg
ICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKiBs
bGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJ
bnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHA6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNl
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
Oml0ZXJhdG9yTmV4dFRyeUZhc3RJbXBsKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DT01N
T05fU0xPV19QQVRIKToKKwogMjAyMS0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZCBmaWxlcyB0byB4Y29kZXByb2oKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
CShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDE4ICsxMTgsNDUgQEAgdm9pZCBk
dW1wQXJyYXlNb2RlcyhQcmludFN0cmVhbSYgb3V0LCBBcgogICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJCaWdVaW50NjRBcnJheU1vZGUiKTsKIH0KIAotdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCit2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0cnVj
dHVyZUlEKQorICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291bGQgYmUgY2FsbGluZyBpbnRvIHRo
aXMgYXQgdGhlIHNhbWUgdGltZS4KKyAgICBTdHJ1Y3R1cmVJRCBpZCA9IG1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRDsKKyAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgU3RydWN0
dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCk7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgU3RydWN0
dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KGlkKTsKKyAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBs
YXN0U2VlblN0cnVjdHVyZSk7CiAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKIH0KIAot
dm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBsYXN0U2VlblN0
cnVjdHVyZSkKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrKQogeworICAgIC8vIE11bHRpcGxlIHRo
cmVhZHMgY291bGQgYmUgY2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4KKyAgICBT
dHJ1Y3R1cmVJRCBpZCA9IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKKyAgICBpZiAoIWlkKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IHVu
bGlua2VkQ29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOworCisg
ICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmUobGFzdFNl
ZW5TdHJ1Y3R1cmUpOworICAgIAorICAgIGlmICghbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5n
CisgICAgICAgICYmIGhhc1R3b09yTW9yZUJpdHNTZXQobV9vYnNlcnZlZEFycmF5TW9kZXMpKSB7
CisgICAgICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzID0gYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmUo
bGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgICAgICBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcg
PSB0cnVlOworICAgIH0KKworICAgIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHw9IGxh
c3RTZWVuU3RydWN0dXJlLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKKworICAgIG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCA9IDA7Cit9CisKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpCit7
CisgICAgLy8gTXVsdGlwbGUgdGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0
aGUgc2FtZSB0aW1lLiBUaGF0IHdvbid0IGxlYWQKKyAgICAvLyB0byBhbnkgZm9ybSBvZiBjb3Jy
dXB0aW9uLCBidXQgY291bGQgY2F1c2UgdXMgdG8gZ28gZG93biAhbV9kaWRQZXJmb3JtRmlyc3RS
dW5QcnVuaW5nCisgICAgLy8gcGF0aCBzaW11bHRhbmVvdXNseS4KICAgICBtX29ic2VydmVkQXJy
YXlNb2RlcyB8PSBhcnJheU1vZGVzRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7CiAg
ICAgCiAgICAgaWYgKCFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKQEAgLTE0MCw4ICsxNjcs
MTEgQEAgdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdAogICAgIAogICAg
IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHw9CiAgICAgICAgIGxhc3RTZWVuU3RydWN0
dXJlLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNPcmln
aW5hbEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKQorICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBsYXN0U2VlblN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
aWYgKGdsb2JhbE9iamVjdCAhPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQorICAgICAgICBt
X29ic2VydmVkRGlmZmVyZW50R2xvYmFsT2JqZWN0ID0gdHJ1ZTsKKyAgICBpZiAoZ2xvYmFsT2Jq
ZWN0CisgICAgICAgICYmICFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShs
YXN0U2VlblN0cnVjdHVyZSkKICAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5
cGVkQXJyYXlTdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpKQogICAgICAgICBtX3VzZXNPcmln
aW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogfQpAQCAtMTYzLDEzICsxOTMsMTMgQEAgdm9p
ZCBBcnJheVByb2ZpbGU6Om9ic2VydmVJbmRleGVkUmVhZChWTQogICAgIH0KIH0KIAotQ1N0cmlu
ZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQorQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJy
aWVmRGVzY3JpcHRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrKTsKLSAgICByZXR1cm4gYnJpZWZEZXNjcmlw
dGlvbldpdGhvdXRVcGRhdGluZyhsb2NrZXIpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihjb2RlQmxvY2spOworICAgIHJldHVybiBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5n
KCk7CiB9CiAKLUNTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVw
ZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6
YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZygpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJl
YW0gb3V0OwogICAgIENvbW1hUHJpbnRlciBjb21tYTsKQEAgLTE4NCw2ICsyMTQsOCBAQCBDU3Ry
aW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpCiAgICAgICAgIG91dC5wcmludChj
b21tYSwgIkludGVyY2VwdCIpOwogICAgIGlmIChtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiT3JpZ2luYWwiKTsKKyAgICBpZiAobV9vYnNl
cnZlZERpZmZlcmVudEdsb2JhbE9iamVjdCkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlm
ZmVyZW50R2xvYmFsIik7CiAKICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkocmV2aXNp
b24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBVbmxp
bmtlZENvZGVCbG9jazsKIAogLy8gVGhpcyBpcyBhIGJpdGZpZWxkIHdoZXJlIGVhY2ggYml0IHJl
cHJlc2VudHMgYW4gdHlwZSBvZiBhcnJheSBhY2Nlc3MgdGhhdCB3ZSBoYXZlIHNlZW4uCiAvLyBU
aGVyZSBhcmUgMTkgaW5kZXhpbmcgdHlwZXMgdGhhdCB1c2UgdGhlIGxvd2VyIGJpdHMuCkBAIC0y
MDEsNiArMjAyLDcgQEAgcHVibGljOgogICAgICAgICA6IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGZhbHNlKQogICAgICAgICAsIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRy
dWUpCiAgICAgICAgICwgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nKGZhbHNlKQorICAgICAg
ICAsIG1fb2JzZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmplY3QoZmFsc2UpCiAgICAgewogICAgIH0K
ICAgICAKQEAgLTIxNywyMiArMjE5LDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIG9ic2VydmVTdHJ1
Y3R1cmVJRChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQg
PSBzdHJ1Y3R1cmVJRDsgfQogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7IH0KIAot
ICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIENvZGVCbG9jayopOwotICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1
Y3R1cmUpOworICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKFVubGlua2VkQ29kZUJs
b2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKik7Cisg
ICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBs
YXN0U2VlblN0cnVjdHVyZSk7CiAgICAgCiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFycmF5
TW9kZXMgbW9kZSkgeyBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9pZCBv
YnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBKU0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBB
cnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBj
b25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQotICAgIGJvb2wgbWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0
dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CisgICAgQXJyYXlNb2RlcyBvYnNl
cnZlZEFycmF5TW9kZXMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQor
ICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3JlVG9I
b2xlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVU
b0hvbGU7IH0KLSAgICBib29sIG91dE9mQm91bmRzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
IGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZCb3VuZHM7IH0KKyAgICBib29sIG1heVN0b3JlVG9Ib2xl
KCkgY29uc3QgeyByZXR1cm4gbV9tYXlTdG9yZVRvSG9sZTsgfQorICAgIGJvb2wgb3V0T2ZCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBtX291dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2Vz
T3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3Qg
eyByZXR1cm4gbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzOyB9CisgICAgdm9pZCBzZXREb2VzTm90VXNlT3JpZ2luYWxBcnJheVN0cnVj
dHVyZXMoKSB7IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7IH0KIAotICAg
IENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2Rl
QmxvY2sqKTsKLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJik7CisgICAgYm9vbCBvYnNlcnZlZERpZmZlcmVudEdsb2Jh
bE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmplY3Q7
IH0KKworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihDb2RlQmxvY2sqKTsKKyAgICBDU3Ry
aW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsKICAgICAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTI0NSw2ICsyNTEsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgOiAxOwog
ICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9k
aWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsKKyAgICBib29sIG1fb2JzZXJ2ZWREaWZmZXJl
bnRHbG9iYWxPYmplY3QgOiAxOwogICAgIEFycmF5TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9kZXMg
eyAwIH07CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJ
KHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBvcCA6Z2V0X2Fy
Z3VtZW50LAogICAgICAgICBpbmRleDogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDphcmd1bWVudF9jb3VudCwKQEAgLTE4Myw3ICsxODMsNyBAQCBv
cCA6dG9fdGhpcywKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDog
U3RydWN0dXJlSUQsCiAgICAgICAgIHRvVGhpc1N0YXR1czogVG9UaGlzU3RhdHVzLAotICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4q
LAogICAgIH0KIAogb3AgOmNoZWNrX3RkeiwKQEAgLTMwOSw3ICszMDksNyBAQCBvcF9ncm91cCA6
VmFsdWVQcm9maWxlZEJpbmFyeU9wLAogICAgICAgICByaHM6IFZpcnR1YWxSZWdpc3RlciwKICAg
ICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZQorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3AgOmJpdG5vdCwKQEAgLTMx
OCw3ICszMTgsNyBAQCBvcCA6Yml0bm90LAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0
ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLioKICAgICB9CiAKIG9wX2dyb3VwIDpV
bmFyeU9wLApAQCAtMzYzLDcgKzM2Myw3IEBAIG9wIDp0b19vYmplY3QsCiAgICAgICAgIG1lc3Nh
Z2U6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAK
IG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5hcnlPcCwKQEAgLTM3Niw3ICszNzYsNyBAQCBvcF9n
cm91cCA6VmFsdWVQcm9maWxlZFVuYXJ5T3AsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6bmVn
YXRlLApAQCAtNDQ1LDcgKzQ0NSw3IEBAIG9wIDppbl9ieV92YWwsCiAgICAgICAgIHByb3BlcnR5
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJh
eVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDppbl9ieV9pZCwKQEAgLTQ3Niw4ICs0NzYsOSBAQCBvcCA6Z2V0
X2J5X2lkLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0
YTogeworICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQcm9m
aWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1l
dGFkYXRhLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCiBvcCA6Z2V0
X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OCw3ICs0ODksNyBAQCBvcCA6Z2V0X2J5X2lkX3dpdGhf
dGhpcywKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpnZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTQ5OSw3
ICs1MDAsNyBAQCBvcCA6Z2V0X2J5X3ZhbF93aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0K
IAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBAIC01MDksNyArNTEwLDcgQEAgb3AgOmdldF9ieV9p
ZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFk
YXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGlu
dAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwgIyBub3QgdXNlZCBpbiBsbGludAog
ICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWdu
ZWQsCiAgICAgfQpAQCAtNTIwLDcgKzUyMSw3IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAogICAg
ICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDp0cnlfZ2V0X2J5X2lkLApAQCAtNTMwLDcgKzUzMSw3IEBAIG9w
IDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3MSw4
ICs1NzIsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4q
LAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKQEAg
LTU4Myw3ICs1ODQsNyBAQCBvcCA6Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVydHk6
IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAg
ICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwK
ICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxdLApAQCAtNjMyLDcgKzYzMyw3
IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAg
ICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlf
dmFsX3dpdGhfdGhpcywKQEAgLTY1Miw3ICs2NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3Qs
CiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6
IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmRlbF9ieV92YWwsCkBAIC04NDIsNyArODQz
LDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlu
a0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnRhaWxfY2Fs
bCwKQEAgLTg1NCw3ICs4NTUsNyBAQCBvcCA6dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwK
ICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBAIC04NjcsNyArODY4LDcgQEAgb3AgOmNhbGxfZXZh
bCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRD
YWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJv
ZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAtODgw
LDggKzg4MSw4IEBAIG9wIDpjYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQs
CiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJv
ZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAg
ICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNpZ25l
ZCwKQEAgLTkwMSw4ICs5MDIsOCBAQCBvcCA6dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZp
cnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVBy
b2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRp
bmdUaGlzOiB1bnNpZ25lZApAQCAtOTIyLDggKzkyMyw4IEBAIG9wIDp0YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJv
ZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4q
LAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25zdHJ1
Y3QsCkBAIC05MzQsOCArOTM1LDggQEAgb3AgOmNvbnN0cnVjdCwKICAgICAgICAgYXJndjogdW5z
aWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogeworICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAogb3AgOmNvbnN0cnVjdF92YXJhcmdz
LApAQCAtOTQ4LDggKzk0OSw4IEBAIG9wIDpjb25zdHJ1Y3RfdmFyYXJncywKICAgICAgICAgZmly
c3RWYXJBcmc6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBhcmdDb3VudEluY2x1ZGlu
Z1RoaXM6IHVuc2lnbmVkCkBAIC0xMDI4LDcgKzEwMjksNyBAQCBvcCA6Z2V0X2Zyb21fc2NvcGUs
CiAgICAgICAgICAgICBzdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwKICAg
ICAgICAgfSwKICAgICAgICAgb3BlcmFuZDogdWludHB0cl90LCAjb2Zmc2V0IDYKLSAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLCAjIG9mZnNldCA3CisgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZS4qLCAjIG9mZnNldCA3CiAgICAgfSwKICAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6
IHsKICAgICAgICAgZ2V0UHV0SW5mbzogOmdldFB1dEluZm8sCkBAIC0xMDY1LDcgKzEwNjYsNyBA
QCBvcCA6Z2V0X2Zyb21fYXJndW1lbnRzLAogICAgICAgICBpbmRleDogdW5zaWduZWQsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1bWVu
dHMsCkBAIC0xMTczLDcgKzExNzQsNyBAQCBvcCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAgICBl
bnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAg
ICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBB
cnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0
YWRhdGEsCiAgICAgfQogCkBAIC0xMTg3LDggKzExODgsOCBAQCBvcCA6ZW51bWVyYXRvcl9nZXRf
YnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAg
ICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVy
YXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjAyLDcgKzEy
MDMsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9ieV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6IFZp
cnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4q
LAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9
CiAKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG9wIDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHks
CiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFk
YXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJh
eVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVu
dW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyNDgsMTIgKzEyNDksMTIgQEAgb3AgOml0
ZXJhdG9yX29wZW4sCiAgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKICAgICB9LAogICAg
IG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisg
ICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIG5leHRQcm9m
aWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YSwKLSAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAg
ICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGl0ZXJhdG9y
UHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2Rl
TWV0YWRhdGEsCi0gICAgICAgIG5leHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKICAg
ICBjaGVja3BvaW50czogewogICAgICAgICBzeW1ib2xDYWxsOiBuaWwsCkBAIC0xMjcxLDE0ICsx
MjcyLDE0IEBAIG9wIDppdGVyYXRvcl9uZXh0LAogICAgICAgICBzdGFja09mZnNldDogdW5zaWdu
ZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogeworICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAg
ICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgaXRlcmFibGVQcm9m
aWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlv
bk1vZGVNZXRhZGF0YSwKLSAgICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAg
ICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIG5leHRSZXN1
bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdldEJ5
SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAg
ICAgIHZhbHVlTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAotICAgICAgICB2YWx1
ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgbmV4
dFJlc3VsdDogSlNWYWx1ZSwKQEAgLTEzMjIsNyArMTMyMyw3IEBAIG9wIDpnZXRfaW50ZXJuYWxf
ZmllbGQsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLiosCiAgICAgfQogCiBvcCA6cHV0X2ludGVybmFsX2ZpZWxkLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlT3Bl
cmFuZHNGb3JDaGVja3BvaW50LmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NywyMCArNTcsMjAgQEAgVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3JJ
bXBsKEJ5dGVjbwogICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOwogICAgIGlmIGNv
bnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3Blbikg
ewogICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBjYXNlIE9wSXRl
cmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4gJm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxl
OwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gJm1ldGFkYXRh
Lm1fbmV4dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6
IHJldHVybiBtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJh
dG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7CiAgICAgICAg
IGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAogICAg
IH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0
ZXJhdG9yX25leHQpIHsKICAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKLSAgICAg
ICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTog
cmV0dXJuICZtZXRhZGF0YS5tX2RvbmVQcm9maWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JO
ZXh0OjpnZXRWYWx1ZTogcmV0dXJuICZtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKKyAgICAgICAg
Y2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHJldHVybiBtZXRhZGF0YS5tX25leHRS
ZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1
cm4gbWV0YWRhdGEubV9kb25lUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6
Z2V0VmFsdWU6IHJldHVybiBtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKICAgICAgICAgZGVmYXVs
dDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSAK
LSAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX3Byb2ZpbGU7CisgICAgICAgIHJldHVybiBtZXRh
ZGF0YS5tX3Byb2ZpbGU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRhdGE+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
cmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NCw2ICszNzQsMTAgQEAgQ29kZUJsb2NrOjpD
b2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIAogYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSogc2NvcGUpCiB7CisgICAg
Ly8gV2UgY2FuJ3QgZmluYWxpemUgYSBHQyB3aGlsZSBpbiBoZXJlIHNpbmNlIHdlIG5lZWQgdG8g
bWFrZSBzdXJlIHRvCisgICAgLy8gbWFrZSBzdXJlIG91ciBWYWx1ZVByb2ZpbGVzIGFuZCBBcnJh
eVByb2ZpbGVzIGFsbCBwb2ludCB0byBwcm9wZXIgbG9jYXRpb25zLgorICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsgCisKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgZmluaXNoQ3JlYXRpb25Db21tb24odm0pOwogCkBAIC0zODMsOCArMzg3LDExIEBA
IGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgdm0uZnVu
Y3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPnJlbW92ZVVuZXhlY3V0ZWRSYW5nZShvd25lckV4ZWN1
dGFibGUtPnNvdXJjZUlEKCksIG93bmVyRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0KHZtKSwgb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KHZtKSk7CiAK
ICAgICBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUgPSBvd25lckV4ZWN1dGFi
bGUtPnRvcExldmVsRXhlY3V0YWJsZSgpOwotICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlu
a2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29u
c3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRvcExldmVsRXhlY3V0YWJsZSk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisKKyAgICAvLyBXZSB3
YWl0IHRvIGluaXRpYWxpemUgdGVtcGxhdGUgb2JqZWN0cyB1bnRpbCB0aGUgZW5kIG9mIGZpbmlz
aENyZWF0aW9uIGJlZWNhdXNlIGl0IGNhbgorICAgIC8vIHRocm93LiBXZSByZWx5IG9uIGxpbmtp
bmcgdG8gcHV0IHRoZSBDb2RlQmxvY2sgaW50byBhIGNvaGVyZW50IHN0YXRlLCBzbyB3ZSBjYW4n
dCB0aHJvdworICAgIC8vIHVudGlsIHdlJ3JlIGFsbCBkb25lIGxpbmtpbmcuCisgICAgVmVjdG9y
PHVuc2lnbmVkPiB0ZW1wbGF0ZU9iamVjdEluZGljZXMgPSBzZXRDb25zdGFudFJlZ2lzdGVycyh1
bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2st
PmNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpKTsKIAogICAgIC8vIFdlIGFscmVh
ZHkgaGF2ZSB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmb3IgdGhlIG1vZHVsZSBlbnZpcm9ubWVu
dCBzaW5jZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlCiAgICAgLy8gdGhlIG1vZHVsZSBlbnZpcm9u
bWVudHMgYmVmb3JlIGxpbmtpbmcgdGhlIGNvZGUgYmxvY2suIFdlIHJlcGxhY2UgdGhlIHN0b3Jl
ZCBzeW1ib2wgdGFibGUgd2l0aCB0aGUgYWxyZWFkeSBjbG9uZWQgb25lLgpAQCAtNDM1LDcgKzQ0
Miw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAvLyBC
b29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAg
IEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVu
dmlyb25tZW50czsKIAotICAgIGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8q
aW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8mIC8qbWV0YWRhdGEqLykgewor
ICAgIGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywg
YXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8VmFsdWVQcm9maWxlKiwgZGVjbHR5cGUobWV0YWRhdGEubV9wcm9m
aWxlKT4pOwogICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAg
ICAgfTsKIApAQCAtNDk5LDkgKzUwNyw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKIAogICAgICAgICBMSU5LKE9wR2V0QnlJZCwgcHJvZmlsZSkKIAotICAgICAg
ICBMSU5LKE9wRW51bWVyYXRvck5leHQsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BFbnVtZXJh
dG9ySW5CeVZhbCwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JIYXNPd25Qcm9w
ZXJ0eSwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0KQorICAgICAgICBM
SU5LKE9wRW51bWVyYXRvckluQnlWYWwpCisgICAgICAgIExJTksoT3BFbnVtZXJhdG9ySGFzT3du
UHJvcGVydHkpCiAgICAgICAgIExJTksoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIHByb2ZpbGUpCiAK
ICAgICAgICAgTElOSyhPcENhbGwsIHByb2ZpbGUpCkBAIC01NjMsNyArNTcxLDYgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYnl0ZWNvZGUubV9yZXNvbHZlVHlwZSAhPSBSZXNvbHZlZENsb3N1cmVWYXIpOwogCiAg
ICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9i
YWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQs
IEdldCwgYnl0ZWNvZGUubV9yZXNvbHZlVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0
aWFsaXphdGlvbik7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKIAogICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IG9wLnR5cGU7
CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2xvY2FsU2NvcGVEZXB0aCA9IG9wLmRlcHRoOwpAQCAt
NTk4LDcgKzYwNSw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMK
IAogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVj
b2RlLm1fdmFyKTsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0
UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgs
IHNjb3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwg
SW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7Ci0gICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAogICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAo
b3AudHlwZSA9PSBNb2R1bGVWYXIpCkBAIC02MzIsNyArNjM4LDYgQEAgYm9vbCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fd2F0Y2hwb2ludFNldCA9IG51bGxwdHI7CiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBK
U1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1f
c3ltYm9sVGFibGVPclNjb3BlRGVwdGguc2NvcGVEZXB0aCgpLCBzY29wZSwgaWRlbnQsIFB1dCwg
Ynl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKIAogICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZv
ID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3AudHlw
ZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29kZS5t
X2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBHbG9i
YWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9w
LnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKQpAQCAtNjY1LDcgKzY3MCw2IEBAIGJvb2wgQ29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgICAgICAvLyBFdmVuIHRob3Vn
aCB0eXBlIHByb2ZpbGluZyBtYXkgYmUgcHJvZmlsaW5nIGVpdGhlciBhIEdldCBvciBhIFB1dCwg
d2UgY2FuIGFsd2F5cyBjbGFpbSBhIEdldCBiZWNhdXNlCiAgICAgICAgICAgICAgICAgLy8gd2Un
cmUgYWJzdHJhY3RseSAicmVhZCJpbmcgZnJvbSBhIEpTU2NvcGUuCiAgICAgICAgICAgICAgICAg
UmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0Lmdl
dCgpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX3Jlc29s
dmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAogICAgICAg
ICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBNb2R1bGVW
YXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AubGV4aWNhbEVudmlyb25t
ZW50LT5zeW1ib2xUYWJsZSgpOwpAQCAtNzYxLDYgKzc2NSw1OSBAQCBib29sIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJTksK
IAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQXJndW1l
bnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkKKyAgICAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT52
YWx1ZVByb2ZpbGUoaSkuY2xlYXJCdWNrZXRzKCk7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXgg
PSBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyAvLyBUaGUgZmlyc3QgbnVtYmVyT2ZB
cmd1bWVudFZhbHVlUHJvZmlsZXMoKSBwcm9maWxlcyBhcmUgYXJndW1lbnQgdmFsdWUgcHJvZmls
ZXMKKworICAgICAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBhc3NpZ24g
PSBbJl0gKFZhbHVlUHJvZmlsZSomIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBwcm9maWxl
ID0gJnVubGlua2VkQ29kZUJsb2NrLT52YWx1ZVByb2ZpbGUoaW5kZXgrKyk7CisgICAgICAgICAg
ICB9OworCisjZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBhc3NpZ24obWV0YWRhdGEubV9wcm9m
aWxlKTsgfSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxF
KFZJU0lUKQorI3VuZGVmIFZJU0lUCisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCisgICAgICAgICAgICAgICAg
YXNzaWduKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBhc3Np
Z24obWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbiht
ZXRhZGF0YS5tX25leHRQcm9maWxlKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUpOwor
ICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2RvbmVQcm9maWxlKTsKKyAgICAgICAg
ICAgICAgICBhc3NpZ24obWV0YWRhdGEubV92YWx1ZVByb2ZpbGUpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSB1bmxpbmtlZENv
ZGVCbG9jay0+bnVtVmFsdWVQcm9maWxlcygpKTsKKyAgICB9CisKKyAgICBpZiAobV9tZXRhZGF0
YSkgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisKKyAgICAgICAgYXV0byBhc3NpZ24g
PSBbJl0gKEFycmF5UHJvZmlsZSomIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIHByb2ZpbGUgPSAm
dW5saW5rZWRDb2RlQmxvY2stPmFycmF5UHJvZmlsZShpbmRleCsrKTsKKyAgICAgICAgfTsKKwor
ICAgICAgICAvLyBXZSBvbmx5IHNoYXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGUgb3Bjb2RlcyBp
biBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFLgorICAgICAgICAvLyBXZSBkb24n
dCB5ZXQgc2hhcmUgYXJyYXkgcHJvZmlsZXMgZm9yIHRoaW5ncyB3aXRoIExMSW50IENhbGxMaW5r
SW5mb3MuCisjZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFzc2lnbihtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSk7IH0pOworICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKFZJ
U0lUKQorI3VuZGVmIFZJU0lUCisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJh
dG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgYXNzaWduKG1ldGFk
YXRhLm1faXRlcmFibGVQcm9maWxlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaW5kZXggPT0gdW5saW5rZWRDb2RlQmxvY2stPm51bUFycmF5UHJvZmlsZXMoKSk7Cisg
ICAgfQorCiAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhDb250cm9sRmxv
d1Byb2ZpbGVyT3Bjb2RlcygpKQogICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0Zv
ckNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIApAQCAtNzgxLDYgKzgzOCw5IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICBpZiAobV9tZXRhZGF0YSkKICAgICAg
ICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX21ldGFkYXRhLT5zaXplSW5C
eXRlcygpKTsKIAorICAgIGluaXRpYWxpemVUZW1wbGF0ZU9iamVjdHModG9wTGV2ZWxFeGVjdXRh
YmxlLCB0ZW1wbGF0ZU9iamVjdEluZGljZXMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg2OSwxOSArOTI5
LDIwIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0K
IAotdm9pZCBDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9y
PFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291
cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
LCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpCitWZWN0b3I8dW5zaWduZWQ+
IENvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgRml4ZWRWZWN0b3I8V3JpdGVC
YXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRzLCBjb25zdCBGaXhlZFZlY3RvcjxTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pCiB7CiAg
ICAgVk0mIHZtID0gKm1fdm07Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dsb2JhbE9iamVjdC5n
ZXQoKTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gdGVtcGxhdGVPYmplY3RJbmRpY2VzOworCiAg
ICAgQVNTRVJUKGNvbnN0YW50cy5zaXplKCkgPT0gY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uLnNpemUoKSk7Ci0gICAgc2l6ZV90IGNvdW50ID0gY29uc3RhbnRzLnNpemUoKTsKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IGNvbnN0YW50cy5zaXplKCk7CiAgICAgewogICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3Rl
cnMucmVzaXplVG9GaXQoY291bnQpOwogICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykg
ewogICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gY29uc3RhbnRzW2ldLmdldCgpOwogICAgICAg
ICBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb24gPSBjb25zdGFudHNTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb25baV07CiAgICAgICAgIHN3aXRjaCAocmVwcmVzZW50YXRpb24p
IHsKQEAgLTkwNSwxNyArOTY2LDI3IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lz
dGVycyhjb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFD
b2RlQmxvY2sodGhpcyk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xv
bmU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVj
dXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj4odm0sIGNlbGwpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgdGVtcGxhdGVPYmplY3RJbmRpY2VzLmFwcGVuZChpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLnNldCh2bSwgdGhpcywgY29uc3RhbnQp
OwogICAgIH0KKworICAgIHJldHVybiB0ZW1wbGF0ZU9iamVjdEluZGljZXM7Cit9CisKK3ZvaWQg
Q29kZUJsb2NrOjppbml0aWFsaXplVGVtcGxhdGVPYmplY3RzKFNjcmlwdEV4ZWN1dGFibGUqIHRv
cExldmVsRXhlY3V0YWJsZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgdGVtcGxhdGVPYmplY3RJ
bmRpY2VzKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKCkpOwor
ICAgIGZvciAodW5zaWduZWQgaSA6IHRlbXBsYXRlT2JqZWN0SW5kaWNlcykgeworICAgICAgICBh
dXRvKiBkZXNjcmlwdG9yID0ganNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj4obV9j
b25zdGFudFJlZ2lzdGVyc1tpXS5nZXQoKSk7CisgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0
ID0gdG9wTGV2ZWxFeGVjdXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3Qo
KSwgZGVzY3JpcHRvcik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uc2V0KHZtKCksIHRoaXMsIHRlbXBs
YXRlT2JqZWN0KTsKKyAgICB9CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRBbHRlcm5hdGl2ZShW
TSYgdm0sIENvZGVCbG9jayogYWx0ZXJuYXRpdmUpCkBAIC05MjgsOCArOTk5LDYgQEAgdm9pZCBD
b2RlQmxvY2s6OnNldEFsdGVybmF0aXZlKFZNJiB2bSwgQwogdm9pZCBDb2RlQmxvY2s6OnNldE51
bVBhcmFtZXRlcnModW5zaWduZWQgbmV3VmFsdWUpCiB7CiAgICAgbV9udW1QYXJhbWV0ZXJzID0g
bmV3VmFsdWU7Ci0KLSAgICBtX2FyZ3VtZW50VmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZh
bHVlUHJvZmlsZT4oT3B0aW9uczo6dXNlSklUKCkgPyBuZXdWYWx1ZSA6IDApOwogfQogCiBDb2Rl
QmxvY2sqIENvZGVCbG9jazo6c3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKQpAQCAtOTkwLDcg
KzEwNTksNyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9yJiB2CiAgICAg
c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMobG9ja2VyLCB2aXNpdG9yKTsKICAgICBzdHJv
bmdseVZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB2aXNpdG9yKTsKICAgICAKLSAgICBWTTo6
U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkuYWRkKHRoaXMpOworICAgIHZtKCkuY29k
ZUJsb2NrU3BhY2Uuc2V0LmFkZCh0aGlzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KQEAgLTE1MTcsNyArMTU4NiwzNSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKIAotICAgIHVwZGF0ZUFsbFByZWRp
Y3Rpb25zKCk7CisgICAgeworICAgICAgICAvLyBXZSBvbmx5IHVwZGF0ZSB0aGUgcHJvZmlsZXMg
dGhhdCB0aGUgVW5saW5rZWRDb2RlQmxvY2sgZG9lc24ndCBvd24uCisKKyAgICAgICAgaWYgKG1f
bWV0YWRhdGEpIHsKKyNkZWZpbmUgVVBEQVRFKF9fb3ApIFwKKyAgICAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBtZXRhZGF0YS5tX2NhbGxM
aW5rSW5mby5tX2FycmF5UHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24odGhpcyk7IH0p
OworICAgICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfTExJTlRfQ0FMTF9MSU5LX0lORk8o
VVBEQVRFKQorI3VuZGVmIFVQREFURQorCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PE9wQ2F0Y2g+KFsmXShhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgICAgIGlmIChtZXRh
ZGF0YS5tX2J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+
Zm9yRWFjaChbJl0oVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9maWxlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgICAgIGxh
enlPcGVyYW5kVmFsdWVQcm9maWxlcyhsb2NrZXIpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMo
bG9ja2VyKTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgZm9yRWFjaEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUoWyZdKEFycmF5QWxsb2NhdGlvblByb2ZpbGUmIHByb2ZpbGUpIHsKKyAgICAg
ICAgICAgIHByb2ZpbGUudXBkYXRlUHJvZmlsZSgpOworICAgICAgICB9KTsKKyAgICB9CiAKICNp
ZiBFTkFCTEUoSklUKQogICAgIGJvb2wgaXNFbGlnaWJsZUZvckxMSW50RG93bmdyYWRlID0gbV9p
c0VsaWdpYmxlRm9yTExJbnREb3duZ3JhZGU7CkBAIC0xNjAzLDcgKzE3MDAsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgfTsKICAgICB1cGRhdGVBY3Rp
dml0eSgpOwogCi0gICAgVk06OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92
ZSh0aGlzKTsKKyAgICB2bS5jb2RlQmxvY2tTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOwogCiAgICAg
Ly8gSW4gQ29kZUJsb2NrOjpzaG91bGRWaXNpdFN0cm9uZ2x5KCkgd2UgbWF5IGhhdmUgZGVjaWRl
ZCB0byBza2lwIHZpc2l0aW5nIHRoaXMKICAgICAvLyBjb2RlQmxvY2suIEJ5IHRoZSB0aW1lIHdl
IGdldCBoZXJlLCB3ZSdyZSBkb25lIHdpdGggdGhlIHZlcmlmaWVyIEdDLiBTbywgbGV0J3MKQEAg
LTI3NzMsNyArMjg3MCw3IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2Zp
bGUKICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7CiAjZGVmaW5lIENBU0Ux
KE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKLSAgICAgICAgcmV0dXJuICZpbnN0cnVj
dGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9hcnJheVByb2ZpbGU7CisgICAgICAgIHJl
dHVybiBpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9hcnJheVByb2ZpbGU7
CiAKICNkZWZpbmUgQ0FTRTIoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXApAQCAtMjc4
NSwxMyArMjg4Miw2IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUK
ICN1bmRlZiBDQVNFMQogI3VuZGVmIENBU0UyCiAKLSAgICBjYXNlIE9wR2V0QnlJZDo6b3Bjb2Rl
SUQ6IHsKLSAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+
KCk7Ci0gICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0g
ICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2RlOjpB
cnJheUxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
YXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI5MDAsMTkgKzI5OTAsMTkgQEAg
dm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZQogICAgICAgICAgICAgbnVt
U2FtcGxlcyA9IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzOyAvLyBXZSBkb24ndCB3YW50
IHByb2ZpbGVzIHRoYXQgYXJlIGV4dHJlbWVseSBob3QgdG8gYmUgZ2l2ZW4gbW9yZSB3ZWlnaHQu
CiAgICAgICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMgKz0gbnVtU2FtcGxlczsKICAgICAg
ICAgaWYgKGlzQXJndW1lbnQpIHsKLSAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChw
cm9maWxlLm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUuaXNTYW1wbGVkQmVmb3JlKCkpCiAg
ICAgICAgICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKLSAgICAg
ICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICB9KTsKIAogICAgIGlmIChtX21l
dGFkYXRhKSB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDYXRjaD4oWyZdKGF1dG8m
IG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9idWZmZXIpIHsKICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+Zm9yRWFjaChbJl0oVmFsdWVQcm9maWxlQW5k
VmlydHVhbFJlZ2lzdGVyJiBwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUu
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0pOwpAQCAtMjkzMSwxMCArMzAyMSw4IEBAIHZvaWQgQ29k
ZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKIAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0
ZUFsbEFycmF5UHJlZGljdGlvbnMoKQogewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKLSAgICAKICAgICBmb3JFYWNoQXJyYXlQcm9maWxlKFsmXShBcnJheVByb2ZpbGUm
IHByb2ZpbGUpIHsKLSAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyLCB0aGlzKTsKKyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24odGhp
cyk7CiAgICAgfSk7CiAgICAgCiAgICAgZm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUoWyZd
KEFycmF5QWxsb2NhdGlvblByb2ZpbGUmIHByb2ZpbGUpIHsKQEAgLTMxNjQsNyArMzI1Miw3IEBA
IFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2YKIAogI2RlZmluZSBDQVNF
KE9wKSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKLSAgICAgICAgcmV0dXJuICZpbnN0cnVj
dGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9wcm9maWxlOworICAgICAgICByZXR1cm4g
aW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsKIAogICAgICAg
ICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKENBU0UpCiAKQEAgLTMxODEsMTAg
KzMyNjksMTAgQEAgVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZgogICAg
IH0KIH0KIAotU3BlY3VsYXRlZFR5cGUgQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9u
Rm9yQnl0ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4KQorU3BlY3VsYXRlZFR5cGUgQ29kZUJsb2NrOjp2YWx1ZVBy
b2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgpCiB7CiAgICAgaWYgKFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlID0gdHJ5R2V0VmFsdWVQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIHZh
bHVlUHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHJl
dHVybiB2YWx1ZVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgIHJldHVy
biBTcGVjTm9uZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Db2RlQmxvY2soKTsKIAogICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLmdldCgpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlVubGlua2VkQ29kZUJs
b2NrKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV91bmxpbmtlZENvZGUp
OyB9CiAKICAgICBDU3RyaW5nIGluZmVycmVkTmFtZSgpIGNvbnN0OwogICAgIENvZGVCbG9ja0hh
c2ggaGFzaCgpIGNvbnN0OwpAQCAtNDc0LDE5ICs0NzUsMTYgQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzLnNpemUoKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9udW1QYXJhbWV0ZXJzKSB8fCAhT3B0aW9uczo6dXNlSklUKCkpOwotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpOworICAgICAgICByZXR1cm4gbnVtUGFy
YW1ldGVycygpOwogICAgIH0KIAogICAgIFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yQXJn
dW1lbnQodW5zaWduZWQgYXJndW1lbnRJbmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChPcHRp
b25zOjp1c2VKSVQoKSk7IC8vIFRoaXMgaXMgb25seSBjYWxsZWQgZnJvbSB0aGUgdmFyaW91cyBK
SVQgY29tcGlsZXJzIG9yIHBsYWNlcyB0aGF0IGZpcnN0IGNoZWNrIG51bWJlck9mQXJndW1lbnRW
YWx1ZVByb2ZpbGVzIGJlZm9yZSBjYWxsaW5nIHRoaXMuCi0gICAgICAgIFZhbHVlUHJvZmlsZSYg
cmVzdWx0ID0gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXNbYXJndW1lbnRJbmRleF07Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jaygpLT52YWx1
ZVByb2ZpbGUoYXJndW1lbnRJbmRleCk7CiAgICAgfQogCiAgICAgVmFsdWVQcm9maWxlJiB2YWx1
ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwotICAgIFNwZWN1bGF0ZWRU
eXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZXgpOworICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJv
ZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoVmFsdWVQcm9maWxlKGNvbnN0IEZ1
bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBcnJh
eVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwpAQCAtOTM5LDcgKzkzNyw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVz
cyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25l
ZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyk7CiAKLSAgICB2b2lkIHNldENvbnN0YW50UmVn
aXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50
cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYgY29uc3RhbnRz
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1
dGFibGUpOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3Qg
Rml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRzLCBjb25zdCBGaXhl
ZFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24pOworICAgIHZvaWQgaW5pdGlhbGl6ZVRlbXBsYXRlT2JqZWN0cyhTY3JpcHRF
eGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mKTsK
IAogICAgIHZvaWQgcmVwbGFjZUNvbnN0YW50KFZpcnR1YWxSZWdpc3RlciByZWcsIEpTVmFsdWUg
dmFsdWUpCiAgICAgewpAQCAtMTAxNSw3ICsxMDE0LDYgQEAgcHJpdmF0ZToKICAgICAvLyBmb3Ig
REZHIGNvZGUgYmxvY2tzLgogICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlciBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlczsKICNlbmRpZgotICAgIEZpeGVkVmVjdG9y
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFu
dCBQb29sCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVC
YXJyaWVyX1Vua25vd24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwyMiArMzksMjIgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29u
cwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNkZWZpbmUgVklTSVQoX19vcCkgXAotICAgICAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyht
ZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVh
Y2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5tX3Byb2ZpbGUs
IGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklM
RShWSVNJVCkKIAogI3VuZGVmIFZJU0lUCiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxP
cEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKLSAgICAgICAgICAgIGZ1bmMo
bWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0
YWRhdGEubV9pdGVyYXRvclByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRh
dGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9p
dGVyYWJsZVByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRl
cmF0b3JQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRQ
cm9maWxlLCBmYWxzZSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVh
Y2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1
bmMobWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVu
YyhtZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFk
YXRhLm1fdmFsdWVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5t
X25leHRSZXN1bHRQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5t
X2RvbmVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX3ZhbHVl
UHJvZmlsZSwgZmFsc2UpOwogICAgICAgICB9KTsKICAgICB9ICAgCiAKQEAgLTY0LDEzICs2NCw4
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFy
cmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogewogICAgIGlmIChtX21ldGFkYXRhKSB7
Ci0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFk
YXRhKSB7Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBH
ZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAgICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKLSAgICAgICAgfSk7
Ci0KICNkZWZpbmUgVklTSVQxKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+
KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0p
OworICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBm
dW5jKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwogCiAjZGVmaW5lIFZJU0lUMihfX29w
KSBcCiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKQEAgLTgy
LDcgKzc3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29ucwogI3Vu
ZGVmIFZJU0lUMgogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+
KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVy
YWJsZVByb2ZpbGUpOworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2Zp
bGUpOwogICAgICAgICB9KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg5LDYgKzg5LDE5IEBAIFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPiBFeGl0
UHJvZmlsZTo6ZXgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIEV4aXRQcm9maWxlOjpo
YXNBbnlFeGl0c0F0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJlcXVlbnRFeGl0U2l0ZXMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZyZXF1
ZW50RXhpdFNpdGVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9mcmVxdWVudEV4aXRT
aXRlcy0+YXQoaSkuYnl0ZWNvZGVJbmRleCgpID09IGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXhp
dFByb2ZpbGU6Omhhc0V4aXRTaXRlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IEZy
ZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyZXF1ZW50RXhpdFNp
dGVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQ
cm9maWxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDggQEAg
cHVibGljOgogICAgIC8vIEdldCB0aGUgZnJlcXVlbnQgZXhpdCBzaXRlcyBmb3IgYSBieXRlY29k
ZSBpbmRleC4gVGhpcyBpcyBPKG4pLCBhbmQgaXMKICAgICAvLyBtZWFudCB0byBvbmx5IGJlIHVz
ZWQgZnJvbSBkZWJ1Z2dpbmcvcHJvZmlsaW5nIGNvZGUuCiAgICAgVmVjdG9yPEZyZXF1ZW50RXhp
dFNpdGU+IGV4aXRTaXRlc0ZvcihCeXRlY29kZUluZGV4KTsKKworICAgIGJvb2wgaGFzQW55RXhp
dHNBdChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgpIGNvbnN0OwogICAgIAogICAgIC8vIFRoaXMgaXMgTyhuKSBhbmQgc2hvdWxkIGJlIGNhbGxl
ZCBvbiBsZXNzLWZyZXF1ZW50bHkgZXhlY3V0ZWQgY29kZSBwYXRocwogICAgIC8vIGluIHRoZSBj
b21waWxlci4gSXQgc2hvdWxkIGJlIHN0cmljdGx5IGNoZWFwZXIgdGhhbiBidWlsZGluZyBhCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0
YS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZE1ldGFkYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCw2IEBAIHN0cnVj
dCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEdl
dEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIpOwogCi1zdHJ1Y3QgR2V0QnlJZE1vZGVNZXRh
ZGF0YUFycmF5TGVuZ3RoIHsKLSAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotfTsKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIp
OwotCiBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCB7CiAgICAgU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQ7CiAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwpAQCAtOTAs
NyArODUsNiBAQCB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICB9OwogICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRh
dGFVbnNldCB1bnNldE1vZGU7Ci0gICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9h
ZE1vZGU7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YSkgPT0g
MTYpOwpAQCAtMTEzLDcgKzEwNyw2IEBAIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAg
ICB1bmlvbiB7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0IGRlZmF1bHRNb2Rl
OwogICAgICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5zZXRNb2RlOwotICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5ndGhNb2RlOwogICAgICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CiAgICAgfTsKICAgICBH
ZXRCeUlkTW9kZSBtb2RlOwpAQCAtMTM3LDcgKzEzMCw2IEBAIGlubGluZSB2b2lkIEdldEJ5SWRN
b2RlTWV0YWRhdGE6OnNldFVuc2UKIGlubGluZSB2b2lkIEdldEJ5SWRNb2RlTWV0YWRhdGE6OnNl
dEFycmF5TGVuZ3RoTW9kZSgpCiB7CiAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aDsKLSAgICBuZXcgKCZhcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGU7
CiAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcu
CiAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyAr
MzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigpIHsgfQog
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3NlZExhenlP
cGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExhenlPcGVy
YW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQordm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKQotICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICBtX2RhdGEtPmF0KGkpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogfQogCiBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVy
OjphZGQoCkBAIC04NywxMyArODcsMTMgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIExhenlP
cGVyYW5kVmFsdQogfQogCiBTcGVjdWxhdGVkVHlwZSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBh
cnNlcjo6cHJlZGljdGlvbigKLSAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKKyAgICBjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5
KSBjb25zdAogewogICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0SWZQ
cmVzZW50KGtleSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm4gU3BlY05vbmU7
CiAgICAgCi0gICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOworICAgIHJldHVybiBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wY29kZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoRm9yTWF4CiAgICAgbWFjcm8oT3BFbnVtZXJhdG9y
R2V0QnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JJbkJ5VmFsKSBcCiAgICAgbWFjcm8o
T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHkpIFwKKyAgICBtYWNybyhPcEdldEJ5SWQpIFwKIAog
I2RlZmluZSBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9BTExPQ0FUSU9OX1BST0ZJTEUobWFj
cm8pIFwKICAgICBtYWNybyhPcE5ld0FycmF5KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHJldmlzaW9uIDI4
MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsOCBAQCB2b2lkIFVubGlua2VkQ29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wCiAgICAgZXh0cmFNZW1vcnkgKz0gdGhpc09iamVjdC0+
bV9mdW5jdGlvbkV4cHJzLmJ5dGVTaXplKCk7CiAKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVt
b3J5VmlzaXRlZChleHRyYU1lbW9yeSk7CisKKyAgICBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigq
dGhpc09iamVjdC0+c3Vic3BhY2UoKSkuYWRkKHRoaXNPYmplY3QpOwogfQogCiBERUZJTkVfVklT
SVRfQ0hJTERSRU4oVW5saW5rZWRDb2RlQmxvY2spOwpAQCAtMzE2LDQgKzMxOCw0NSBAQCBpbnQg
VW5saW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBPZmZzCiAgICAgcmV0dXJuIG1fb3V0T2ZM
aW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAordm9pZCBVbmxpbmtlZENv
ZGVCbG9jazo6YWxsb2NhdGVTaGFyZWRQcm9maWxlcygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
IW1fbWV0YWRhdGEtPmlzRmluYWxpemVkKCkpOworCisgICAgeworICAgICAgICB1bnNpZ25lZCBu
dW1iZXJPZlZhbHVlUHJvZmlsZXMgPSBudW1QYXJhbWV0ZXJzKCk7CisgICAgICAgIGlmIChtX21l
dGFkYXRhLT5oYXNNZXRhZGF0YSgpKSB7CisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAg
ICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+
KCk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKENPVU5U
KQorI3VuZGVmIENPVU5UCisgICAgICAgICAgICBudW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0gbV9t
ZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yT3Blbj4oKSAqIDM7CisgICAgICAgICAgICBu
dW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
TmV4dD4oKSAqIDM7CisgICAgICAgIH0KKworICAgICAgICBtX3ZhbHVlUHJvZmlsZXMgPSBGaXhl
ZFZlY3RvcjxWYWx1ZVByb2ZpbGU+KG51bWJlck9mVmFsdWVQcm9maWxlcyk7CisgICAgfQorCisg
ICAgaWYgKG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKKyAgICAgICAgdW5zaWduZWQgbnVt
YmVyT2ZBcnJheVByb2ZpbGVzID0gMDsKKworI2RlZmluZSBDT1VOVChfX29wKSBcCisgICAgICAg
IG51bWJlck9mQXJyYXlQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7
CisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ09VTlQpCisjdW5k
ZWYgQ09VTlQKKyAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51
bUVudHJpZXM8T3BJdGVyYXRvck5leHQ+KCk7CisKKyAgICAgICAgbV9hcnJheVByb2ZpbGVzID0g
Rml4ZWRWZWN0b3I8QXJyYXlQcm9maWxlPihudW1iZXJPZkFycmF5UHJvZmlsZXMpOworICAgIH0K
K30KKwordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0m
KQoreworICAgIGZvciAoYXV0byYgcHJvZmlsZSA6IG1fdmFsdWVQcm9maWxlcykKKyAgICAgICAg
cHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICBmb3IgKGF1dG8mIHByb2Zp
bGUgOiBtX2FycmF5UHJvZmlsZXMpCisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKHRoaXMpOworCisgICAgVk06OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkp
LnJlbW92ZSh0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNp
b24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRp
b25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5o
IgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxl
LmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVy
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KQEAg
LTMyNCw2ICszMjYsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGUobG9j
a2VyLCBzaXRlKTsKICAgICB9CiAKKyAgICBib29sIGhhc0FueUV4aXRzQXQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmhhc0FueUV4aXRzQXQobG9ja2Vy
LCBieXRlY29kZUluZGV4KTsKKyAgICB9CisKKyAgICBib29sIGhhc0FueUV4aXRzQXQoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgICAgICByZXR1cm4gaGFzQW55RXhpdHNBdChsb2NrZXIsIGJ5
dGVjb2RlSW5kZXgpOworICAgIH0KKwogICAgIERGRzo6RXhpdFByb2ZpbGUmIGV4aXRQcm9maWxl
KCkgeyByZXR1cm4gbV9leGl0UHJvZmlsZTsgfQogI2VuZGlmCiAKQEAgLTMzNCw2ICszNDcsOSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21ldGFkYXRhLT5zaXplSW5CeXRlcygpOwogICAg
IH0KIAorICAgIHZvaWQgYWxsb2NhdGVTaGFyZWRQcm9maWxlcygpOworCisgICAgdm9pZCBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgVW5saW5rZWRDb2Rl
QmxvY2soVk0mLCBTdHJ1Y3R1cmUqLCBDb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPik7CkBAIC00MTksNiArNDM1LDggQEAgcHJpdmF0
ZToKICAgICBGaXhlZFZlY3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwogICAgIEZpeGVk
VmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9jb25zdGFudFJlZ2lzdGVyczsKICAgICBG
aXhlZFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOworICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV92YWx1ZVBy
b2ZpbGVzOyAvLyBUaGUgZmlyc3QgbnVtUGFyYW1ldGVycygpIGFyZSBhcmd1bWVudCBwcm9maWxl
cy4KKyAgICBGaXhlZFZlY3RvcjxBcnJheVByb2ZpbGU+IG1fYXJyYXlQcm9maWxlczsKICAgICB1
c2luZyBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+PjsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0
b3IgbV9mdW5jdGlvbkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0
aW9uRXhwcnM7CkBAIC00NTYsNiArNDc0LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG91
dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgIH0KIAorICAgIFZh
bHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fdmFsdWVQcm9m
aWxlc1tpXTsgfQorICAgIEFycmF5UHJvZmlsZSYgYXJyYXlQcm9maWxlKHVuc2lnbmVkIGkpIHsg
cmV0dXJuIG1fYXJyYXlQcm9maWxlc1tpXTsgfQorICAgIHVuc2lnbmVkIG51bVZhbHVlUHJvZmls
ZXMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpOyB9CisgICAgdW5zaWdu
ZWQgbnVtQXJyYXlQcm9maWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm9maWxlcy5zaXpl
KCk7IH0KKwogcHJpdmF0ZToKICAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hN
YXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksNiArMTE5LDcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxp
egogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29kZUJsb2NrLT5jZWxsTG9jaygp
IH07CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1
Y3Rpb25zKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmFsbG9jYXRlU2hhcmVkUHJvZmlsZXMoKTsK
ICAgICAgICAgbV9jb2RlQmxvY2stPm1fbWV0YWRhdGEtPmZpbmFsaXplKCk7CiAKICAgICAgICAg
bV9jb2RlQmxvY2stPm1fanVtcFRhcmdldHMgPSBXVEZNb3ZlKG1fanVtcFRhcmdldHMpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1l
dGFkYXRhVGFibGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2
ICs1Miw4IEBAIHB1YmxpYzoKICAgICB+VW5saW5rZWRNZXRhZGF0YVRhYmxlKCk7CiAKICAgICB1
bnNpZ25lZCBhZGRFbnRyeShPcGNvZGVJRCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ5dGVj
b2RlPgorICAgIHVuc2lnbmVkIG51bUVudHJpZXMoKTsKIAogICAgIHNpemVfdCBzaXplSW5CeXRl
cygpOwogCkBAIC02NCw2ICs2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVW5saW5rZWRNZXRhZGF0YVRhYmxlKTsKICAgICB9CiAKKyAgICBib29sIGlzRmluYWxp
emVkKCkgeyByZXR1cm4gbV9pc0ZpbmFsaXplZDsgfQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSB7
IHJldHVybiBtX2hhc01ldGFkYXRhOyB9CisKIHByaXZhdGU6CiAgICAgZW51bSBFbXB0eVRhZyB7
IEVtcHR5IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZE1ldGFkYXRhVGFibGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAkocmV2aXNpb24gMjgy
MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFU
YWJsZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTQgQEAgQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRhVAogICAgIHJldHVybiBwcmVwcm9jZXNzQnVm
ZmVyKClbb3Bjb2RlSURdKys7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZT4KK0FM
V0FZU19JTkxJTkUgdW5zaWduZWQgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpudW1FbnRyaWVzKCkK
K3sKKyAgICBjb25zdGV4cHIgYXV0byBvcGNvZGVJRCA9IEJ5dGVjb2RlOjpvcGNvZGVJRDsKKyAg
ICBBU1NFUlQoIW1faXNGaW5hbGl6ZWQgJiYgb3Bjb2RlSUQgPCBzX29mZnNldFRhYmxlRW50cmll
cyAtIDEpOworICAgIHJldHVybiBwcmVwcm9jZXNzQnVmZmVyKClbb3Bjb2RlSURdOworfQorCiBB
TFdBWVNfSU5MSU5FIHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNpemVJbkJ5dGVzKCkK
IHsKICAgICBpZiAobV9pc0ZpbmFsaXplZCAmJiAhbV9oYXNNZXRhZGF0YSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDI4
MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xv
Y2suaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC00NSw2ICs0Niwx
MSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgCiAgICAgVmFsdWVQcm9maWxlQmFz
ZSgpCiAgICAgeworICAgICAgICBjbGVhckJ1Y2tldHMoKTsKKyAgICB9CisKKyAgICB2b2lkIGNs
ZWFyQnVja2V0cygpCisgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90
YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkKICAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KQEAgLTU1LDE3ICs2MSw2IEBAIHN0cnVjdCBW
YWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG1fYnVja2V0cyArIG51bWJlck9mQnVj
a2V0cyArIGk7CiAgICAgfQogICAgIAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKHVu
c2lnbmVkIGJ1Y2tldCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUobV9idWNrZXRzW2J1Y2tldF0pOwotICAgICAgICBpZiAoISF2YWx1ZSkgewot
ICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkt
PmNsYXNzSW5mbygpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LSAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZlNhbXBsZXMoKSBjb25zdAogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKQEAgLTkyLDkgKzg3LDkgQEAgc3RydWN0IFZhbHVlUHJv
ZmlsZUJhc2UgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIENTdHJp
bmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikKKyAg
ICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oKQogICAgIHsKLSAgICAgICAgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigp
OwogICAgICAgICAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgICAgICBvdXQu
cHJpbnQoInByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG1fcHJlZGljdGlvbikpOwpAQCAt
MTE4LDEwICsxMTMsMTAgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIC8vIFVwZGF0ZXMgdGhlIHByZWRpY3Rpb24gYW5kIHJldHVybnMgdGhl
IG5ldyBvbmUuIE5ldmVyIGNhbGwgdGhpcyBmcm9tIGFueSB0aHJlYWQKLSAgICAvLyB0aGF0IGlz
bid0IGV4ZWN1dGluZyB0aGUgY29kZS4KLSAgICBTcGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKKyAgICBTcGVjdWxhdGVkVHlw
ZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKQogICAgIHsKKyAgICAgICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAg
ICAgICAvLyBUaGUgaW1wb3J0IHBhcnQgaXMgdGhhdCB3ZSBkb24ndCBlbmQgdXAgY29ycnVwdGlu
ZyBhbnkgdmFsdWVzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1i
ZXJPZkJ1Y2tldHM7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShtX2J1Y2tldHNbaV0pOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKQEAgLTE1Niw2
ICsxNTEsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiAKIHN0
cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0czwwPiB7CiAgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpcnN0QnVj
a2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZhbHVlUHJvZmlsZSwgbV9idWNrZXRzWzBd
KTsgfQogfTsKIAogc3RydWN0IFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlciA6IHB1Ymxp
YyBWYWx1ZVByb2ZpbGUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTMgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1BcnJheU1vZGUgQXJyYXlNb2RlOjpm
cm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmls
ZSogcHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWFrZVNhZmUpCitBcnJheU1v
ZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoR3JhcGgmIGdyYXBoLCBjb25zdCBDb2RlT3JpZ2lu
JiBvcmlnaW4sIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJv
b2wgbWFrZVNhZmUpCiB7CisgICAgaWYgKHByb2ZpbGUtPm9ic2VydmVkRGlmZmVyZW50R2xvYmFs
T2JqZWN0KCkgJiYgZ3JhcGguaGFzQW55RXhpdHNBdChvcmlnaW4pKQorICAgICAgICBwcm9maWxl
LT5zZXREb2VzTm90VXNlT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoKTsKKwogICAgIEFycmF5OjpD
bGFzcyBub25BcnJheTsKLSAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVzKGxvY2tlcikpCisgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cygpKQogICAgICAgICBub25BcnJheSA9IEFycmF5OjpPcmlnaW5hbE5vbkFycmF5OwogICAgIGVs
c2UKICAgICAgICAgbm9uQXJyYXkgPSBBcnJheTo6Tm9uQXJyYXk7CkBAIC02MywyNyArNjYsMjcg
QEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb252ZXJ0cyA9IEFycmF5OjpBc0lzOwogCi0gICAgICAgIHJldHVybiBB
cnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwg
aXNBcnJheSwgY29udmVydHMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgIH07CiAKLSAgICBBcnJheU1vZGVzIG9ic2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRB
cnJheU1vZGVzKGxvY2tlcik7CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZCA9IHByb2ZpbGUtPm9i
c2VydmVkQXJyYXlNb2RlcygpOwogICAgIHN3aXRjaCAob2JzZXJ2ZWQpIHsKICAgICBjYXNlIDA6
CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVucHJvZmlsZWQpOwogICAgIGNhc2Ug
YXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheSk6Ci0gICAgICAgIGlmIChh
Y3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMobG9ja2VyKSkKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXBy
b2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdBcmd1bWVudHMsIG5vbkFycmF5LCBBcnJheTo6
T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pOwotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53
aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9u
QXJyYXksIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNh
ZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0
aFVuZGVjaWRlZCk6CiAgICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlKQogICAgICAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdBcmd1bWVudHMsIEFycmF5
OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFy
cmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2Vy
LCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVu
ZGVjaWRlZCwgQXJyYXk6OkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICAgICAgCiAgICAgY2Fz
ZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoVW5kZWNpZGVkKToKLSAgICAgICAgaWYgKGFj
dGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJv
ZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgQXJyYXk6OlBvc3NpYmx5QXJy
YXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbiku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFj
dGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAg
ICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEludDMy
KToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoSW50
MzIpOgpAQCAtMTEzLDUwICsxMTYsNTAgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2Vy
dmVkKGNvbnN0IAogICAgICAgICByZXR1cm4gaGFuZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpD
b250aWd1b3VzLCBvYnNlcnZlZCk7CiAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rp
b24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAg
ICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5
U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNs
b3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93
UHV0QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2Zp
bGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJ
cywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBj
YXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5
OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24p
LndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNl
IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6
UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5
U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQ
cm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5n
VHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAg
IGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0
b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0
b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywg
YWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAg
cmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3Np
Ymx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICBjYXNlIEludDhBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpJbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJv
ZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2Ug
SW50MzJBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJy
YXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MzJB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUs
IG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQ4QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKEFycmF5OjpVaW50OEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbiku
d2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRB
cnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4
Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUo
cHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgVWludDE2QXJyYXlNb2RlOgotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVp
bnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJy
YXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMy
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBGbG9hdDMyQXJyYXlNb2RlOgotICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQzMkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2
NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5
LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0NjRB
cnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUs
IG1ha2VTYWZlKTsKICAgICBjYXNlIEJpZ0ludDY0QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4g
QXJyYXlNb2RlKEFycmF5OjpCaWdJbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJ
cywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdV
aW50NjRBcnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2
NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2Vy
LCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJp
Z1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUo
cHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBzZWVuIG11bHRpcGxlIFR5cGVkQXJyYXkgdHlwZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9u
LXR5cGVkIGFycmF5LCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhl
IG9iamVjdCBzaW5jZSB5b3UgY2FuJ3QgY29udmVydCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlm
IChvYnNlcnZlZCAmIEFMTF9UWVBFRF9BUlJBWV9NT0RFUykKLSAgICAgICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53
aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkdlbmVyaWMsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZl
ZCAmIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxl
LT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKLSAgICAgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMpLndpdGhTcGVjdWxhdGlv
bkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICBpZiAoKG9i
c2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheSkpICYmIHBy
b2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQorICAgICAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucykud2l0aFNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgICAgICAKICAgICAgICAgQXJyYXk6
OlR5cGUgdHlwZTsKICAgICAgICAgQXJyYXk6OkNsYXNzIGFycmF5Q2xhc3M7CkBAIC0xODMsNyAr
MTg2LDcgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBhcnJheUNsYXNzID0gQXJyYXk6OlBvc3NpYmx5QXJyYXk7CiAg
ICAgICAgIAotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5
OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252
ZXJ0LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICB9CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24g
MjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZSh3b3JkKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2Jz
ZXJ2ZWQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFj
dGlvbiwgYm9vbCBtYWtlU2FmZSk7CisgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQo
R3JhcGgmLCBjb25zdCBDb2RlT3JpZ2luJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSk7CiAgICAgCiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJh
eTo6U3BlY3VsYXRpb24gc3BlY3VsYXRpb24pIGNvbnN0CiAgICAgewpAQCAtMTkwLDEzICsxOTAs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFz
cywgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAot
ICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBj
b25zdAorICAgIEFycmF5TW9kZSB3aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShBcnJheVByb2Zp
bGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6
U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsKIAogICAgICAgICBpZiAobWFrZVNhZmUpCiAgICAg
ICAgICAgICBteVNwZWN1bGF0aW9uID0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgICAgICBlbHNl
IGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9sZShsb2NrZXIpKQorICAgICAgICBlbHNlIGlmIChw
cm9maWxlLT5tYXlTdG9yZVRvSG9sZSgpKQogICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFy
cmF5OjpUb0hvbGU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBB
cnJheTo6SW5Cb3VuZHM7CkBAIC0yMDQsMjcgKzIwNCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHdpdGhTcGVjdWxhdGlvbihteVNwZWN1bGF0aW9uKTsKICAgICB9CiAgICAgCi0gICAgQXJy
YXlNb2RlIHdpdGhQcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0Ci0gICAgewotICAgICAgICBB
cnJheTo6Q2xhc3MgbXlBcnJheUNsYXNzOwotCi0gICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewot
ICAgICAgICAgICAgaWYgKHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2Nr
ZXIpICYmIGJlbmVmaXRzRnJvbU9yaWdpbmFsQXJyYXkoKSkgewotICAgICAgICAgICAgICAgIEFy
cmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIp
OwotICAgICAgICAgICAgICAgIGlmIChoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1vZGVz
KSAmJiAhaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCi0gICAgICAgICAgICAgICAg
ICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbENvcHlPbldyaXRlQXJyYXk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoIWhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5TW9kZXMp
ICYmIGhhc1NlZW5Xcml0YWJsZUFycmF5KGFycmF5TW9kZXMpKQotICAgICAgICAgICAgICAgICAg
ICBteUFycmF5Q2xhc3MgPSBBcnJheTo6T3JpZ2luYWxBcnJheTsKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKLSAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpB
cnJheTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNs
YXNzKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNs
YXNzKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZl
KTsKLSAgICB9Ci0gICAgCiAgICAgQXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3Mo
KSwgc3BlY3VsYXRpb24oKSwgY29udmVyc2lvbigpLCBhY3Rpb24oKSk7CkBAIC01MzgsNiArNTE3
LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICB1LmFzV29yZCA9IHdvcmQ7CiAgICAgfQor
CisgICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBt
YWtlU2FmZSkgY29uc3QKKyAgICB7CisgICAgICAgIEFycmF5OjpDbGFzcyBteUFycmF5Q2xhc3M7
CisKKyAgICAgICAgaWYgKGlzSlNBcnJheSgpKSB7CisgICAgICAgICAgICBpZiAocHJvZmlsZS0+
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkgJiYgYmVuZWZpdHNGcm9tT3JpZ2luYWxBcnJh
eSgpKSB7CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzID0gcHJvZmlsZS0+
b2JzZXJ2ZWRBcnJheU1vZGVzKCk7CisgICAgICAgICAgICAgICAgaWYgKGhhc1NlZW5Db3B5T25X
cml0ZUFycmF5KGFycmF5TW9kZXMpICYmICFoYXNTZWVuV3JpdGFibGVBcnJheShhcnJheU1vZGVz
KSkKKyAgICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6Ok9yaWdpbmFsQ29w
eU9uV3JpdGVBcnJheTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaGFzU2VlbkNvcHlPbldy
aXRlQXJyYXkoYXJyYXlNb2RlcykgJiYgaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2Rlcykp
CisgICAgICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbEFycmF5
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNz
ID0gQXJyYXk6OkFycmF5OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbXlB
cnJheUNsYXNzID0gQXJyYXk6OkFycmF5OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG15
QXJyYXlDbGFzcyA9IGFycmF5Q2xhc3MoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB3aXRo
QXJyYXlDbGFzcyhteUFycmF5Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKKyAgICB9CisgICAgCiAgICAgCiAgICAgQXJyYXlNb2RlcyBhcnJheU1v
ZGVzV2l0aEluZGV4aW5nU2hhcGVzKEluZGV4aW5nVHlwZSBzaGFwZSkgY29uc3QKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSwxMSArODk1LDcgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIGF1dG8gZ2V0VmFsdWVQcm9maWxlUHJlZGljdGlvbkZyb21Gb3JD
b2RlQmxvY2tBbmRCeXRlY29kZU9mZnNldCA9IFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb247Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAg
ICAgcHJlZGljdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVj
b2RlSW5kZXgobG9ja2VyLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gY29kZUJsb2NrLT52
YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleChjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgoKSk7CiAgICAgICAgICAgICBhdXRvKiBmdXp6ZXJBZ2VudCA9IG1fdm0tPmZ1enplckFn
ZW50KCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZnV6emVyQWdlbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmdXp6ZXJBZ2VudC0+Z2V0UHJlZGljdGlvbihjb2RlQmxvY2ssIGNvZGVP
cmlnaW4sIHByZWRpY3Rpb24pICYgU3BlY0J5dGVjb2RlVG9wOwpAQCAtOTgzLDEwICs5NzksOSBA
QCBwcml2YXRlOgogCiAgICAgQXJyYXlNb2RlIGdldEFycmF5TW9kZShBcnJheVByb2ZpbGUmIHBy
b2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uKQogICAgIHsKLSAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7
Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrKTsKLSAgICAgICAgYm9vbCBtYWtlU2FmZSA9IHBy
b2ZpbGUub3V0T2ZCb3VuZHMobG9ja2VyKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZTo6ZnJv
bU9ic2VydmVkKGxvY2tlciwgJnByb2ZpbGUsIGFjdGlvbiwgbWFrZVNhZmUpOworICAgICAgICBw
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2spOworICAgICAgICBib29sIG1ha2VTYWZlID0gcHJvZmlsZS5vdXRPZkJvdW5kcygp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQobV9ncmFwaCwgY3VycmVu
dENvZGVPcmlnaW4oKSwgJnByb2ZpbGUsIGFjdGlvbiwgbWFrZVNhZmUpOwogICAgIH0KIAogICAg
IE5vZGUqIG1ha2VTYWZlKE5vZGUqIG5vZGUpCkBAIC0yMDU4LDkgKzIwNTMsOCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pCiAgICAgICAgICAgICAvLyBhcmd1bWVu
dHMgcmVjZWl2ZWQgaW5zaWRlIHRoZSBjYWxsZWUuIEJ1dCB0aGF0IHByb2JhYmx5IHdvbid0IG1h
dHRlciBmb3IgbW9zdAogICAgICAgICAgICAgLy8gY2FsbHMuCiAgICAgICAgICAgICBpZiAoY29k
ZUJsb2NrICYmIGFyZ3VtZW50IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKSkgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJv
ZmlsZSA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJndW1lbnQpOwotICAg
ICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGxvY2tlcikpOworICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgobnVtU2V0QXJn
dW1lbnRzID49IG1hbmRhdG9yeU1pbmltdW0gPyBTZXRBcmd1bWVudE1heWJlIDogU2V0QXJndW1l
bnREZWZpbml0ZWx5LCBPcEluZm8odmFyaWFibGUpKTsKQEAgLTYzMDUsNyArNjI5OSw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGlmIChz
aG91bGRDb21waWxlQXNHZXRCeUlkKQogICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0
ZWNvZGUubV9kc3QsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1i
ZXIsIGdldEJ5U3RhdHVzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkLCBuZXh0T3Bjb2RlSW5kZXgoKSk7
CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2Rl
ID0gZ2V0QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2Zp
bGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0g
Z2V0QXJyYXlNb2RlKCpieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxl
LCBBcnJheTo6UmVhZCk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGNvbnNp
ZGVyIG1ha2luZyB0aGlzIG5vdCB2YXJhcmcsIHNpbmNlIGl0IG9ubHkgdXNlcyB0aHJlZSBjaGls
ZAogICAgICAgICAgICAgICAgIC8vIHNsb3RzLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTIKQEAgLTcwNzUsMTEgKzcwNjks
OSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKIAogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwotCiAgICAgICAgICAgICAgICAg
YnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9m
aWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2Zp
bGUubV9vcGVyYW5kKTsKLSAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAg
ICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xv
Y2FsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChw
cmVkaWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CkBAIC03NDMxLDcgKzc0MjMs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICAgICAgQmFzaWNCbG9jayogaXNEb25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2Nr
KCk7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogZG9Mb2FkQmxvY2sgPSBhbGxvY2F0ZVVu
dGFyZ2V0YWJsZUJsb2NrKCk7CiAKLSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2Rl
ID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBBcnJheTo6UmVhZCk7
CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0
YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBh
dXRvIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRl
eChtX2N1cnJlbnRJbmRleC5vZmZzZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CiAK
ICAgICAgICAgICAgICAgICB7CkBAIC04MzI2LDcgKzgzMTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
ICghY29tcGlsZWRBc0luQnlJZCkgewotICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1v
ZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJv
ZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2Zp
bGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFk
ZFRvR3JhcGgoSW5CeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGJhc2UsIHByb3Bl
cnR5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV92
YWwpOwpAQCAtODQxMCw3ICs4NDAyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfbmV4dDogewogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yTmV4
dD4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUo
bWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBB
cnJheTo6UmVhZCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFz
ZSk7CiAgICAgICAgICAgICBOb2RlKiBpbmRleCA9IGdldChieXRlY29kZS5tX2luZGV4KTsKICAg
ICAgICAgICAgIE5vZGUqIGVudW1lcmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKTsK
QEAgLTg0NDIsNyArODQzNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgY2FzZSBvcF9lbnVtZXJhdG9yX2dldF9ieV92YWw6IHsKICAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdl
dEJ5VmFsPigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5
TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAg
QXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2Zp
bGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9u
ID0gZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KCk7CiAKICAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKQEAgLTg1MDYsNyArODQ5OCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZhbD4oKTsKICAgICAgICAgICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFy
cmF5OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1v
ZGUoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKGdldChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODUyMSw3ICs4NTEz
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBj
YXNlIG9wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eTogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVy
dHk+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2Rl
KG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICBBcnJh
eU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwg
QXJyYXk6OlJlYWQpOwogCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUu
bV9iYXNlKSk7CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9wcm9w
ZXJ0eU5hbWUpKTsKQEAgLTg4ODEsNyArODg3Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5VmFsKEJ5dGUKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7
Ci0gICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OldyaXRlKTsKKyAgICAgICAg
QXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OldyaXRlKTsKIAogICAgICAgICBhZGRWYXJB
cmdDaGlsZChiYXNlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAy
ODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MDQyLDkgKzQwNDIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cHJvZmlsZWRCbG9jay0+Z2V0QXJyYXlQcm9maWxlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCkpOwogICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gQXJyYXlNb2RlKEFy
cmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zLCBBcnJheTo6UmVhZCk7CiAgICAgICAgIGlmIChh
cnJheVByb2ZpbGUpIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJv
ZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgcHJvZmlsZWRCbG9jayk7Ci0gICAgICAgICAgICBhcnJh
eU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChsb2NrZXIsIGFycmF5UHJvZmlsZSwgQXJy
YXk6OlJlYWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKHByb2ZpbGVkQmxvY2spOworICAgICAgICAgICAgYXJyYXlNb2RlID0gQXJy
YXlNb2RlOjpmcm9tT2JzZXJ2ZWQobV9ncmFwaCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBhcnJh
eVByb2ZpbGUsIEFycmF5OjpSZWFkLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2Rl
LnR5cGUoKSA9PSBBcnJheTo6VW5wcm9maWxlZCkgewogICAgICAgICAgICAgICAgIC8vIEZvciBu
b3JtYWwgYXJyYXkgb3BlcmF0aW9ucywgaXQgbWFrZXMgc2Vuc2UgdG8gdHJlYXQgVW5wcm9maWxl
ZAogICAgICAgICAgICAgICAgIC8vIGFjY2Vzc2VzIGFzIEZvcmNlRXhpdCBhbmQgZ2V0IG1vcmUg
ZGF0YSByYXRoZXIgdGhhbiB1c2luZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsNyArNTIwLDEyIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4aXRL
aW5kKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc0FueUV4aXRzQXQoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9j
a0Zvcihjb2RlT3JpZ2luKS0+dW5saW5rZWRDb2RlQmxvY2soKS0+aGFzQW55RXhpdHNBdChjb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSk7CisgICAgfQorCiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBtZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbnRO
b2RlLCBOb2RlKiBvcGVyYW5kTm9kZSk7CiAgICAgCiAgICAgQmxvY2tJbmRleCBudW1CbG9ja3Mo
KSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrcy5zaXplKCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJl
dmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDI2ICszMzcsMjkgQEAgdm9p
ZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgIH0KIH0KIAotc3RhdGlj
IHZvaWQgb3NyV3JpdGVCYXJyaWVyKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBv
d25lciwgR1BSUmVnIHNjcmF0Y2gpCitzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoVk0mIHZt
LCBDQ2FsbEhlbHBlcnMmIGppdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEdQUlJlZyBvd25lciwg
R1BSUmVnIHNjcmF0Y2gpCiB7Ci0gICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG93bmVySXNSZW1l
bWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaFdpdGhvdXRGZW5jZShvd25lcik7Cisg
ICAgYXV0byBlbWl0QmFycmllciA9IFsmXSAoYXV0byogY2VsbCkgeworICAgICAgICBqaXQubW92
ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2VsbCksIG93bmVyKTsKKyAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFy
cmllckJyYW5jaFdpdGhvdXRGZW5jZShvd25lcik7CisKKyAgICAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbk9TUldyaXRlQmFycmllcik+KCZ2bSwgb3duZXIpOworICAg
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgICAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaCk7CisgICAgICAgIGppdC5jYWxsKHNj
cmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKT4oJnZtLCBvd25lcik7Ci0gICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25PU1JXcml0ZUJh
cnJpZXIpKSwgc2NyYXRjaCk7Ci0gICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFn
KTsKKyAgICAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOworICAgIH07
CiAKLSAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CisgICAgZW1pdEJh
cnJpZXIoY29kZUJsb2NrKTsKKyAgICBlbWl0QmFycmllcihjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCkpOwogfQogCiB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICBqaXQubWVtb3J5
RmVuY2UoKTsKICAgICAKLSAgICBqaXQubW92ZSgKLSAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKAotICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVy
bmF0aXZlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIG9zcldyaXRlQmFycmllcih2
bSwgaml0LCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
IG9zcldyaXRlQmFycmllcih2bSwgaml0LCBqaXQuY29kZUJsb2NrKCktPmJhc2VsaW5lQWx0ZXJu
YXRpdmUoKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKIAog
ICAgIC8vIFdlIGJhcnJpZXIgYWxsIGlubGluZWQgZnJhbWVzIC0tIGFuZCBub3QganVzdCB0aGUg
Y3VycmVudCBpbmxpbmUgc3RhY2sgLS0KICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hp
Y2ggaW5saW5lZCBmdW5jdGlvbiBvd25zIHRoZSB2YWx1ZSBwcm9maWxlIHRoYXQKQEAgLTM2Nywx
MiArMzcwLDggQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbAogICAg
IC8vIHRoZSB2YWx1ZSBwcm9maWxlLgogICAgIElubGluZUNhbGxGcmFtZVNldCogaW5saW5lQ2Fs
bEZyYW1lcyA9IGppdC5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+aW5saW5l
Q2FsbEZyYW1lcy5nZXQoKTsKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lcykgewotICAgICAgICBm
b3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDogKmlubGluZUNhbGxGcmFtZXMp
IHsKLSAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5i
YXNlbGluZUNvZGVCbG9jay5nZXQoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
ICAgICBvc3JXcml0ZUJhcnJpZXIodm0sIGppdCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lIDogKmlubGluZUNhbGxGcmFtZXMpCisgICAgICAgICAgICBvc3JX
cml0ZUJhcnJpZXIodm0sIGppdCwgaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5n
ZXQoKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICB9
CiAKICAgICBhdXRvKiBleGl0SW5saW5lQ2FsbEZyYW1lID0gZXhpdC5tX2NvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyODIxODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE2ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IAogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSA+PSAxKTsKICAg
ICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJs
b2NrKCktPm1fbG9jayk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8g
dGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMg
ZnJvbQogICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4g
cG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCiAgICAgICAgICAgICBhdXRvJiBhcmd1
bWVudHMgPSBtX2dyYXBoLm1fcm9vdFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSkt
PnZhbHVlOwogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAg
ICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFs
dWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJn
XS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCi0gICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOworICAgICAgICAgICAgICAg
IGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXRJbmxpbmVzLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTIgKzYyLDkg
QEAgdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGUoY29uc3QgQWJzdHJhYwogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZN
JiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICB2bS5mb3JFYWNoQ29kZUJsb2Nr
U3BhY2UoCi0gICAgICAgIFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKLSAgICAgICAgICAgIHNw
YWNlQW5kU2V0LnNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKLSAgICAgICAgICAgICAgICBbJl0gKEhl
YXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewotICAgICAgICAgICAgICAgICAgICBmdW5j
dG9yKGpzQ2FzdDxDb2RlQmxvY2sqPihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSkpOwotICAg
ICAgICAgICAgICAgIH0pOworICAgIHZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlLmZvckVhY2hMaXZl
Q2VsbCgKKyAgICAgICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpTQ2VsbCo+
KGNlbGwpKSk7CiAgICAgICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MywxMCArNTgzLDEwIEBAIHZvaWQgSGVhcDo6
YWRkUmVmZXJlbmNlKEpTQ2VsbCogY2VsbCwgQXIKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCB0eXBlbmFtZSBDZWxsU2V0Pgotdm9pZCBIZWFwOjpmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKENlbGxTZXQmIGNlbGxTZXQpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgdHlwZW5hbWUgQ2VsbFNldE9ySXNvU3Vic3BhY2U+Cit2b2lkIEhlYXA6
OmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnMoQ2VsbFNldE9ySXNvU3Vic3Bh
Y2UmIHNldE9yU3Vic3BhY2UpCiB7Ci0gICAgY2VsbFNldC5mb3JFYWNoTWFya2VkQ2VsbCgKKyAg
ICBzZXRPclN1YnNwYWNlLmZvckVhY2hNYXJrZWRDZWxsKAogICAgICAgICBbJl0gKEhlYXBDZWxs
KiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q2VsbFR5
cGUqPihjZWxsKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkodm0oKSk7CiAgICAgICAgIH0pOwpA
QCAtNTk4LDEwICs1OTgsMTIgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5h
bGl6ZQogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25F
eGVjdXRhYmxlPih2bSgpLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKICAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPih2bSgpLnN5bWJv
bFRhYmxlU3BhY2UpOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4odm0oKS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENvZGVCbG9jaydzIHVuY29u
ZGl0aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBhdCB0aGUgb3duZXIgZXhl
Y3V0YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFsaXplVW5jb25kaXRpb25h
bGx5LgotICAgIHZtKCkuZm9yRWFjaENvZGVCbG9ja1NwYWNlKAotICAgICAgICBbJl0gKGF1dG8m
IHNwYWNlKSB7Ci0gICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPENvZGVCbG9jaz4oc3BhY2Uuc2V0KTsKLSAgICAgICAgfSk7CisgICAgZmluYWxp
emVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxDb2RlQmxvY2s+KHZtKCkuY29kZUJsb2Nr
U3BhY2Uuc2V0KTsKKyAgICB2bSgpLmZvckVhY2hVbmxpbmtlZENvZGVCbG9ja1NwYWNlKFsmXSAo
Vk06OlNwYWNlQW5kU2V0KiBzcGFjZUFuZFNldCkgeworICAgICAgICBpZiAoIXNwYWNlQW5kU2V0
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPFVubGlua2VkQ29kZUJsb2NrPihzcGFjZUFuZFNldC0+c2V0KTsKKyAgICB9
KTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJh
cmVEYXRhPih2bSgpLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOwogICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKCku
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQpOwogICAgIGlmICh2bSgpLm1fd2Vh
a1NldFNwYWNlKQpAQCAtOTczLDcgKzk3NSw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRD
b21waWxlZENvZGUoKQogICAgIHZtKCkuZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAo
YXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CiAgICAgLy8gU3dlZXBpbmcg
bXVzdCBvY2N1ciBiZWZvcmUgZGVsZXRpbmcgc3R1YnMsIG90aGVyd2lzZSB0aGUgc3R1YnMgbWln
aHQgc3RpbGwgdGhpbmsgdGhleSdyZSBhbGl2ZSBhcyB0aGV5IGdldCBkZWxldGVkLgogICAgIC8v
IEFuZCBDb2RlQmxvY2sgZGVzdHJ1Y3RvciBpcyBhc3N1bWluZyB0aGF0IENvZGVCbG9jayBnZXRz
IGRlc3Ryb3llZCBiZWZvcmUgVW5saW5rZWRDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQuCi0gICAg
dm0oKS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNl
LnN3ZWVwKCk7IH0pOworICAgIHZtKCkuY29kZUJsb2NrU3BhY2Uuc3BhY2Uuc3dlZXAoKTsKICAg
ICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVz
KCk7CiB9CiAKQEAgLTE0ODYsNiArMTQ4OCw3IEBAIE5FVkVSX0lOTElORSBib29sIEhlYXA6OnJ1
bkVuZFBoYXNlKEdDQ28KICAgICBpdGVyYXRlRXhlY3V0aW5nQW5kQ29tcGlsaW5nQ29kZUJsb2Nr
cyh2aXNpdG9yLAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrKSB7CiAgICAgICAg
ICAgICB3cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHdyaXRlQmFycmllcihj
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgICAgICB9KTsKIAogICAgIHVwZGF0
ZU9iamVjdENvdW50cygpOwpAQCAtMTUyMyw2ICsxNTI2LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wg
SGVhcDo6cnVuRW5kUGhhc2UoR0NDbwogICAgIG1fY29kZUJsb2Nrcy0+aXRlcmF0ZUN1cnJlbnRs
eUV4ZWN1dGluZygKICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgewogICAgICAg
ICAgICAgd3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB3cml0ZUJhcnJpZXIo
Y29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpKTsKICAgICAgICAgfSk7CiAgICAgbV9jb2Rl
QmxvY2tzLT5jbGVhckN1cnJlbnRseUV4ZWN1dGluZygpOwogICAgICAgICAKQEAgLTI4ODYsMTAg
KzI4OTAsMTQgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICAgICAg
U2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246
OkNvZGVCbG9ja3MpOwogICAgICAgICAgICAgaXRlcmF0ZUV4ZWN1dGluZ0FuZENvbXBpbGluZ0Nv
ZGVCbG9ja3NXaXRob3V0SG9sZGluZ0xvY2tzKHZpc2l0b3IsCiAgICAgICAgICAgICAgICAgWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaykgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGhhbmRs
ZSA9IFsmXSAoYXV0byogY2VsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0
b3IuaXNNYXJrZWQoY2VsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjZWxsLT5j
ZWxsU3RhdGUoKSA9PSBDZWxsU3RhdGU6OlBvc3NpYmx5QmxhY2spCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmlzaXRvci52aXNpdEFzQ29uc3RyYWludChjZWxsKTsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgLy8gVmlzaXQgdGhlIENvZGVCbG9jayBh
cyBhIGNvbnN0cmFpbnQgb25seSBpZiBpdCdzIGJsYWNrLgotICAgICAgICAgICAgICAgICAgICBp
ZiAodmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2spCi0gICAgICAgICAgICAgICAgICAgICAgICAm
JiBjb2RlQmxvY2stPmNlbGxTdGF0ZSgpID09IENlbGxTdGF0ZTo6UG9zc2libHlCbGFjaykKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IudmlzaXRBc0NvbnN0cmFpbnQoY29kZUJsb2Nr
KTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlKGNvZGVCbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZShjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpT
ZWxkb21HcmV5ZWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyODIx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDIsNyArMzAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZSguLi4pOwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4K
KyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFk
YXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGUqPjo6dmFsdWUsIHZvaWQ+CiAgICAgICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKE9wIGJ5dGVjb2RlKTsKIAogICAg
ICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxH
UFIsIEFycmF5UHJvZmlsZSosIFJlZ2lzdGVySUQgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw3
ICszMTIsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotaW5saW5lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lPGRlY2x0eXBlKE9wOjpNZXRhZGF0YTo6bV9wcm9maWxlKSwgVmFsdWVQcm9maWxlPjo6dmFs
dWUsIHZvaWQ+IEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3Ag
Ynl0ZWNvZGUpCitpbmxpbmUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
T3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVByb2ZpbGUqPjo6dmFsdWUsIHZvaWQ+IEpJ
VDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpCiB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk0LDYgKzEx
OTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvCiAgICAgICAg
IGVtaXRJbml0UmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaikpOwogCiAgICAgZW1p
dFdyaXRlQmFycmllcihtX2NvZGVCbG9jayk7CisgICAgZW1pdFdyaXRlQmFycmllcihtX2NvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSk7CiAKICAgICBlbWl0RW50ZXJPcHRpbWl6YXRpb25D
aGVjaygpOwogI2Vsc2UKQEAgLTEyNDUsMTcgKzEyNDYsMjkgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAKICAgICAv
LyBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrKS4KKyAgICAvLyBlbWl0V3JpdGVCYXJyaWVy
KG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpKS4KICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGFyZ3VtZW50R1BSMSk7Ci0gICAgSnVt
cCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2godm0sIGFyZ3Vt
ZW50R1BSMSwgYXJndW1lbnRHUFIyKTsKLQogICAgIGppdC5tb3ZlKGNhbkJlT3B0aW1pemVkR1BS
LCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7IC8vIHNhdmUuCi0gICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1
bWVudEdQUjEpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgQ2FsbCBv
cGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLQor
ICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbDE7CisgICAgQ2FsbCBvcGVyYXRpb25X
cml0ZUJhcnJpZXJDYWxsMjsKKyAgICB7CisgICAgICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRP
ckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BS
Mik7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJh
cnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsKKyAgICAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKKyAgICAgICAgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbDEgPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIG93bmVy
SXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsKKyAgICB9CisgICAgeworICAgICAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMSwgQ29kZUJsb2NrOjpvZmZzZXRPZlVubGlu
a2VkQ29kZUJsb2NrKCkpLCBhcmd1bWVudEdQUjEpOworICAgICAgICBKdW1wIG93bmVySXNSZW1l
bWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1
bWVudEdQUjIpOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
V3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgICAgIG9wZXJhdGlvbldyaXRlQmFycmllckNh
bGwyID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgb3duZXJJc1JlbWVtYmVy
ZWRPckluRWRlbi5saW5rKCZqaXQpOworICAgIH0KICAgICBqaXQubW92ZShHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgogICAgIGppdC5t
b3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7Ci0gICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAgICAgQ2FsbCBvcGVyYXRpb25PcHRpbWl6ZUNhbGw7CkBAIC0x
Mjg5LDcgKzEzMDIsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
CiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcGF0
Y2hCdWZmZXIubGluayhvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKSk7CisgICAgcGF0Y2hC
dWZmZXIubGluayhvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsMSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCkpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsob3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbDIsIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoT3B0aW9uczo6dXNlREZHSklUKCkpCiAgICAgICAgIHBhdGNoQnVmZmVy
Lmxpbmsob3BlcmF0aW9uT3B0aW1pemVDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbk9wdGltaXplKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjgsMTAgKzEw
MjgsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsT3B0aW1pCiAgICAgICAg
IGlmICghaXNDb3B5T25Xcml0ZShiYXNlT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2Ny
aXB0LmlzSW50MzIoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9j
aywgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywgUHV0
S2luZDo6Tm90RGlyZWN0LCBlY21hTW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTEwOTgsMTAgKzEwOTYsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5
VmFsCiAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAm
JiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdHZW5lcmljKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAg
IGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHByb2ZpbGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI0MTIsMTAgKzI0MDgsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0QnlWCiAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJz
Y3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAg
ICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgcmVwYXRjaEFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdU
MywgcmVnVDIpOwogCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV92YWwoY29uc3QgSQogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5VmFsPigpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwogICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsK
QEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RyCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdU
MSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCBy
ZWdUNSwgcmVnVDQpOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAg
ICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmls
ZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02MjIsMTEg
KzYyMiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICBl
bWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChiYXNlLCByZWdUMSk7CiAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RB
cnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhf
dD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0
aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMik7Ci0gICAgICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5s
aW5rKHRoaXMpOwotICAgIH0KKyAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIHJlZ1QyKTsK
IAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKApAQCAtNzk3LDcgKzc5NCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5
LCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBy
ZWdUMSk7CkBAIC04MjAsNyArODE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3Zh
bChjb25zdCBJbgogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SW5CeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAg
QXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgSklU
SW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7
CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSklU
OjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QKICAgICBpZiAoaGFzQW55U2xvd0Nhc2Vz
KGl0ZXIpKSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
Ci0gICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDM5LDcgKzQzOSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJv
cGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9
IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwpAQCAtNDgyLDcg
KzQ4Miw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEkKICAgICAg
ICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2Rl
Lm1fZWNtYU1vZGU7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgICAgICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
OworICAgICAgICBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAgICAgfTsKIAog
ICAgIGlmIChpc0RpcmVjdCkKQEAgLTExMDgsMTEgKzExMDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1CiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAgICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAg
IEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRy
ZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsKLSAgICAgICAgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
YXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgcmVnVDEpOwotICAgICAgICBub3RBcnJheUxl
bmd0aE1vZGUubGluayh0aGlzKTsKLSAgICB9CisgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBlbWl0
QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
LCByZWdUMSk7CiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDApOwogCkBAIC0xNTExLDcgKzE1MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwo
Y29uc3QgSW5zdHJ1CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBB
cnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJy
YXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3BlcnR5LCByZWdUMSk7CkBAIC0xNTM4LDcgKzE1MzUsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGU7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5C
eVZhbEluZGV4KytdOwogCkBAIC0yMzkzLDcgKzIzOTAsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgfQogCiAgICAgc3RhdGljX2Fzc2VydChWYWx1ZVBy
b2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAxKTsKLSAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNz
KG1ldGFkYXRhR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MobWV0YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwg
bV9wcm9maWxlKSksIHJlZ1QxKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBW
YWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwogCiAgICAgcmV0KCk7CiAKQEAg
LTI0NDksNyArMjQ0Nyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SkkKICAgICBDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAg
SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2so
dm0pOwogCi0gICAgaml0LnN0b3JlNjQocmVnVDAsIEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSkpOworICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZT
RVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsK
KyAgICBqaXQuc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
ciwgVmFsdWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KCkpKTsKICAgICBqaXQubW92ZShU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpOwogCiAjaWYgQ1BVKFg4Nl82NCkKQEAgLTI4NTQsNyArMjg1Myw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5kZXgg
PSBieXRlY29kZS5tX2luZGV4OwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU5hbWUgPSBi
eXRlY29kZS5tX3Byb3BlcnR5TmFtZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9
IGJ5dGVjb2RlLm1fZW51bWVyYXRvcjsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0
YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRh
dGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSBKU1ZhbHVlIGdl
dE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBM
TElOVF9QUk9GSUxFX1ZBTFVFKHZhbHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKTsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS0+
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZh
bHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0
LCBjYWxsVGFyZ2V0VGFnKSBcCkBAIC03NjEsNyArNzYxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUoSgogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9j
ayk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlk
TW9kZU1ldGFkYXRhJiBtZXRhZGF0YSkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5
SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0YSwgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODI0LDggKzgyNCw5IEBA
IHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QKICAgICB9IGVsc2UgaWYg
KCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRl
bnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYXJyYXlQcm9maWxlKTsKICAgICAgICAgICAgIG1ldGFkYXRhLnNl
dEFycmF5TGVuZ3RoTW9kZSgpOwotICAgICAgICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKSk7CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5o
ZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAgIH0KQEAgLTg0MSw3ICs4NDIsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUu
bV9iYXNlKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMs
IGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpOwogICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwogfQogCkBAIC04NTcsMTAgKzg1OCwxMCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgp
KQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRl
cmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0gICAgSlNW
YWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9i
amVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNv
ZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOwogICAgIG5leHRSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fbmV4dFByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxl
LT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQo
KTsKIH0KIApAQCAtODc3LDEwICs4NzgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2l0ZXJhdG9yXwogICAgIGlmICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKICAgICAg
ICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0
ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywg
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVz
LT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOwogICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5t
X2RvbmVQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAg
ICBMTElOVF9FTkQoKTsKIH0KIApAQCAtODk0LDEwICs4OTUsMTAgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yXwogICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgaXRl
cmF0b3JSZXR1cm4gPSB2YWx1ZVJlZ2lzdGVyLmpzVmFsdWUoKTsKIAotICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0
ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1v
ZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBj
LCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFt
ZXMtPnZhbHVlLCBtZXRhZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhLCBudWxscHRyKTsKICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OwotICAg
IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV92YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKS5tX3ZhbHVlUHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKQEAgLTEwMjQsNyArMTAyNSw3IEBAIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0QnlWYWwoVk0KICAgICBpZiAoc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAg
ICAgIHVpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgaWYgKGlzSlNT
dHJpbmcoYmFzZVZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmNhbkdldEluZGV4KGkpKSB7CkBAIC0xNDI5LDcgKzE0MzAsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaW5fYnlfdmFsCiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wSW5CeVZhbD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21t
b25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX2Jhc2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9w
ZXJ0eSksICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX3Byb3BlcnR5KSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20JKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2
Nyw3IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGcKICAgICAgICAg
bW92ZSBwYXlsb2FkLCB0MAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0NSwgdDEsIHQwKQorICAgICAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDAsIHQyKQogICAg
ICAgICBnZXQobV9kc3QsIHQyKQogICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQogICAgICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KQEAgLTg1
LDcgKzg1LDcgQEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydQogICAg
IHN0b3JlaSByMSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0Miwg
dDMpCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIs
IHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgcjEsIHIwLCB0MykKICAgICBkaXNwYXRjaCgpCiAKIGVuZApAQCAtNjc3LDkgKzY3Nywx
MCBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9uCiAgICAgICAgIGVu
ZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwg
bWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKLSAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21ldGFkYXRhXQot
ICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFt
ZSUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkLCBzY3Jh
dGNoKQorICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJVtt
ZXRhZGF0YV0sIHNjcmF0Y2gKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0
cyArIFRhZ09mZnNldFtzY3JhdGNoXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6
Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbc2NyYXRjaF0KIGVuZAogCiAKQEAgLTE0MzcsNyAr
MTQzOCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKICAgICBs
b2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQyCiAgICAgYmlu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZERpcmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAg
ICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE0NTgsMzcgKzE0
NTksMjkgQEAgbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGJp
bmVxIHQwLCB0MSwgc2xvd0xhYmVsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0MSkKLSAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEs
IHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6Ci0gICAgYmJu
ZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlM
ZW5ndGgKKyAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5v
cEdldEJ5SWRVbnNldAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAg
ICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJv
dG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRFt0Ml0sIHQzCiAgICAgYmluZXEgdDMsIHQxLCBzbG93TGFi
ZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFt
ZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVk
U2xvdFt0Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQw
LCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIHQyLCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKLS5vcEdldEJ5SWRBcnJh
eUxlbmd0aDoKLSAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aCwgLm9wR2V0QnlJZFVuc2V0Ci0gICAgbW92ZSB0MywgdDAKLSAgICBhcnJheVByb2ZpbGUoJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKLSAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFi
ZWwKLSAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCi0gICAgbG9hZHAg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QzXSwgdDAKLSAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAot
ICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBJbnQzMlRhZywgdDApCi0gICAgcmV0dXJuKEludDMyVGFn
LCB0MCkKKyMgSXQgY2FuJ3QgYmUgYXJyYXkgbGVuZ3RoIHNpbmNlIHdlIGRvbid0IHVzZSB0aGlz
IGZvciBhcmJpdHJhcnkgZ2V0X2J5X2lkJ3MgdGhhdCBjb3VsZAorIyBhY2Nlc3MgImxlbmd0aCIu
IFdlIG9ubHkgdXNlIGl0IGZvciBpdGVyYXRvciBvcGNvZGVzIHdoaWNoIGFyZW4ndCB1c2luZyAi
bGVuZ3RoIiBhcyBhbgorIyBpZGVudGlmaWVyLgogICAgIAogLm9wR2V0QnlJZFVuc2V0OgogICAg
IGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlE
W3QyXSwgdDAKICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBVbmRlZmluZWRUYWcsIDApCisgICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5l
ZFRhZywgMCwgdDMpCiAgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKIAogZW5kCkBAIC0xNTA2
LDIwICsxNDk5LDIwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIK
ICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cK
ICAgICBsb2FkcCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRN
b2RlLmNhY2hlZFNsb3RbdDVdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQo
dDIsIHQzLCB0MCwgdDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0
NSwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgog
ICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRC
eUlkVW5zZXQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2Vs
bFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQogICAgIG1vdmUgdDMsIHQyCi0gICAgYXJyYXlQcm9m
aWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5h
cnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0
YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MSkKICAgICBidGl6IHQyLCBJc0Fy
cmF5LCAub3BHZXRCeUlkU2xvdwogICAgIGJ0aXogdDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BH
ZXRCeUlkU2xvdwogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAg
bG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDAsIHQz
KQogICAgIHJldHVybihJbnQzMlRhZywgdDApCiAKIC5vcEdldEJ5SWRVbnNldDoKQEAgLTE1Mjcs
NyArMTUyMCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKICAg
ICBsb2FkaSBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3Ry
dWN0dXJlSURbdDVdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUs
IHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgYmluZXEgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIFVuZGVmaW5lZFRhZywgMCwgdDMpCiAgICAgcmV0dXJu
KFVuZGVmaW5lZFRhZywgMCkKIAogLm9wR2V0QnlJZERlZmF1bHQ6CkBAIC0xNTM2LDcgKzE1Mjks
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAgICAgbG9hZGlz
IE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9m
ZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQw
LCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykK
ICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkU2xvdzoKQEAgLTE1NDYsNyArMTUzOSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKIC5vc3JSZXR1cm5Q
b2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBz
aXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9m
aWxlLCB0MiwgcjEsIHIwLCB0MykKICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNjI0
LDcgKzE2MTcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAg
ICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQogICAgICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5
bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXls
b2FkLCBzY3JhdGNoKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2MzMsNyAr
MTYyNiw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICAg
ICAgZmQyaWkgcmVzdWx0LCBzY3JhdGNoMiwgc2NyYXRjaDMKICAgICAgICAgc3RvcmVpIHNjcmF0
Y2gzLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KICAgICAgICAgc3RvcmVpIHNjcmF0Y2gy
LCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIs
IHNjcmF0Y2gxKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2NDEsNyArMTYz
NCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBnZXQo
bV9iYXNlLCB0MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Miwg
Q2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5
UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEp
CisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwg
dDIsIHQ1LCB0MSwgdDMpCiAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xv
dykKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MwpAQCAtMTY3OCw3ICsx
NjcxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9wR2V0
QnlWYWxOb3RFbXB0eToKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSwgdDMpCiAgICAgZGlzcGF0Y2goKQogCiAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgpAQCAtMTY5MSw3ICsxNjg0LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9zclJldHVyblBvaW50OgogICAgIGdl
dHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1l
dGFkYXRhKHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0
MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCBy
MSwgcjAsIHQzKQogICAgIHJldHVybihyMSwgcjApCiAKIGVuZCkKQEAgLTE3MTIsNyArMTcwNSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwKICAgICBiaW5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CiAKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVl
UHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAg
ICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTc3NCw3ICsx
NzY3LDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogCiAgICAg
ICAgIC5vdXRPZkJvdW5kczoKICAgICAgICAgICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDBdLCAub3BQ
dXRCeVZhbE91dE9mQm91bmRzCi0gICAgICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICAg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQy
CisgICAgICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3Qy
XQogICAgICAgICAgICAgYWRkaSAxLCB0MywgdDIKICAgICAgICAgICAgIHN0b3JlaSB0MiwgLXNp
emVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVu
Z3RoW3QwXQogICAgICAgICAgICAgam1wIC5zdG9yZVJlc3VsdApAQCAtMTc4NSw3ICsxNzc5LDcg
QEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBnZXQo
bV9iYXNlLCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwg
dDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCi0g
ICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLCB0MiwgdDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAgICAgIGdldChtX3By
b3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwg
dDAsIEludDMyVGFnLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBsb2FkcCBKU09iamVj
dDo6bV9idXR0ZXJmbHlbdDFdLCB0MApAQCAtMTgzOSw3ICsxODMzLDggQEAgbWFjcm8gcHV0QnlW
YWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAu
b3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5OgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAg
ICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwg
dDEKKyAgICAgICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0K
ICAgICAgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAg
ICAgICAgIGJpYiB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1
Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJl
c3VsdAogICAgICAgICBhZGRpIDEsIHQzLCB0MQpAQCAtMTg0Nyw3ICsxODQyLDggQEAgbWFjcm8g
cHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlW
YWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoK
LSAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2Zp
bGUubV9vdXRPZkJvdW5kc1t0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2Zp
bGU6Om1fb3V0T2ZCb3VuZHNbdDFdCiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNo
KCkKQEAgLTI1MTUsNyArMjUxMSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE8KICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJv
bVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmls
ZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0
dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjUyNCw3ICsyNTIwLDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAgICBsb2FkcCBUYWdPZmZzZXRbdDBd
LCB0MQogICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3QwXSwgdDIKICAgICAgICAgdGR6Q2hl
Y2tJZk5lY2Vzc2FyeSh0MSkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBt
X3Byb2ZpbGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29w
ZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAg
ICBlbmQKIApAQCAtMjUzMiw3ICsyNTI4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
ZnJvbV9zY29wZSwgTwogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1f
b3BlcmFuZFt0NV0sIHQzCiAgICAgICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3Zhcmlh
YmxlcyArIFRhZ09mZnNldFt0MCwgdDMsIDhdLCB0MQogICAgICAgICBsb2FkcCBKU0xleGljYWxF
bnZpcm9ubWVudF92YXJpYWJsZXMgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MywgOF0sIHQyCi0gICAg
ICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0
MiwgdDMpCiAgICAgICAgIHJldHVybih0MSwgdDIpCiAgICAgZW5kCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNjgsMTUgKzY4LDE2IEBAIG1h
Y3JvIG1ha2VSZXR1cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGcKICAgICBmbihtYWNybyAodmFs
dWUpCiAgICAgICAgIG1vdmUgdmFsdWUsIHQzCiAgICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAg
ICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0MSwgdDMpCisgICAg
ICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzLCB0MikKICAg
ICAgICAgZ2V0KG1fZHN0LCB0MSkKICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAg
ICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bj
b2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1
ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRh
ZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRh
ZGF0YSwgdmFsdWUsIHNjcmF0Y2gpCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolcHJvZmlsZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAorICAgIHN0b3JlcSB2YWx1ZSwgVmFs
dWVQcm9maWxlOjptX2J1Y2tldHNbc2NyYXRjaF0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNh
bGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4K
QEAgLTg3LDcgKzg4LDcgQEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3Ry
dQogICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAg
ICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1
Y3QsIHQyLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgdDIsIHIwLCB0MykKICAgICBkaXNwYXRjaCgpCiBlbmQKIApAQCAtMTUwOSw3ICsxNTEw
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LAogICAgIGJpbmVx
IHQwLCB0MSwgLm9wR2V0QnlJZERpcmVjdFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6
Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJv
ZmlsZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmls
ZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpA
QCAtMTUxOCw3ICsxNTE5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGly
ZWN0LAogZW5kKQogCiAjIFRoZSBiYXNlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0MwotbWFjcm8g
cGVyZm9ybUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1
ZVByb2ZpbGVOYW1lLCBzbG93TGFiZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBw
ZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVl
UHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwgZG9BcnJheVBy
b2ZpbGUpCiAgICAgbWV0YWRhdGEodDIsIHQxKQogICAgIGxvYWRiICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLm1vZGVbdDJdLCB0MQogCkBAIC0xNTI5LDcgKzE1
MzAsNyBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgYmlu
ZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0
dXJuKHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2FkOgpAQCAtMTU0MCwyNyArMTU0MSwyNyBAQCBt
YWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgbG9hZGlzICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2Fj
aGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVt
b2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUo
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4o
dDApCiAKIC5vcEdldEJ5SWRBcnJheUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdl
dEJ5SWRNb2RlOjpBcnJheUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0MywgdDAK
LSAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRh
TmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBkb0Fy
cmF5UHJvZmlsZSh0MCwgdDIsIHQ1LCB0MSkKICAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFi
ZWwKICAgICBidGl6IHQwLCBJbmRleGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENh
Z2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVy
VGFnLCB0MAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IHQyLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxv
YWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3Qy
XSwgdDAKICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmlu
ZWQsIHQxKQogICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKIAogZW5kCkBAIC0xNTY4LDcgKzE1
NjksMTAgQEAgZW5kCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlk
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQo
bV9iYXNlLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMs
IC5vcEdldEJ5SWRTbG93KQotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9t
b2RlTWV0YWRhdGEsIG1fcHJvZmlsZSwgLm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCBy
ZXR1cm4pCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0
YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwKKyAg
ICAgICAgbWFjcm8gKGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9h
cnJheVByb2ZpbGUsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpCisgICAgICAgIGVuZCkKIAogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQpAQCAtMTU3Nyw3ICsxNTgxLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QgogLm9zclJldHVyblBvaW50OgogICAg
IGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAg
bWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwg
dDIsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwLCB0
MykKICAgICByZXR1cm4ocjApCiAKIGVuZCkKQEAgLTE2OTgsNyArMTcwMiw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gpCiAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAg
c3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZGlzcGF0
Y2goKQogICAgIGVuZAogCkBAIC0xNzE5LDcgKzE3MjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6
ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCiAKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5
UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEp
CisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwg
dDIsIHQ1LCB0MSwgdDMpCiAKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTc1
OSw3ICsxNzYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAog
CiAub3BHZXRCeVZhbERvbmU6CiAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MykKICAgICBkaXNwYXRjaCgpCiAKIC5v
cEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNzcyLDcgKzE3NzYsNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAg
Z2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAg
bWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjAs
IHQzKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTc5NCw3ICsxNzk4LDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLAogCiAgICAgbG9hZGkgT3BHZXRQcml2
YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZh
cmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5h
bWUsIG1fcHJvZmlsZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1l
LCBtX3Byb2ZpbGUsIHQyLCB0MCwgdDMpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRQcml2YXRl
TmFtZVNsb3c6CkBAIC0xODk3LDcgKzE5MDEsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5h
bWUsIG9wY29kZVN0cnVjCiAKICAgICAgICAgLm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlh
ZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhz
LnZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0
b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3Rv
cmVUb0hvbGVbdDVdCisgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDIKKyAgICAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2Zp
bGU6Om1fbWF5U3RvcmVUb0hvbGVbdDJdCiAgICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgogICAg
ICAgICAgICAgc3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdCiAgICAgICAgICAgICBqbXAgLnN0b3JlUmVz
dWx0CkBAIC0xOTA3LDcgKzE5MTIsNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0
MSwgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBtb3ZlIHQxLCB0MgogICAgICAgICBtZXRhZGF0
YSh0NSwgdDApCi0gICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAg
ICAgIGdldChtX3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUlu
dDMyKHNpemUsIHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMK
QEAgLTE5NjIsNyArMTk2Nyw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWMKICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VF
bXB0eToKLSAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBB
cnJheVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hvbGVbdDFdCiAgICAgICAgIGFkZGkgMSwgQXJyYXlT
dG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQogICAgICAgICBiaWIgdDMsIC1zaXplb2Yg
SW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0
MF0sIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKICAgICAgICAgYWRkaSAxLCB0
MywgdDEKQEAgLTE5NzAsNyArMTk3Niw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWMKICAgICAgICAgam1wIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1
bHQKIAogICAgIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3VuZHNbdDVdCisg
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVd
LCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX291dE9mQm91bmRzW3QxXQog
ICAgIC5vcFB1dEJ5VmFsU2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCkBAIC0yNjYyLDcgKzI2NjksNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgbWFjcm8gZ2V0
UHJvcGVydHkoKQogICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3Bl
cmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQw
LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1
LCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1
LCB0MiwgdDMpCiAgICAgICAgIHJldHVybih0MikKICAgICBlbmQKIApAQCAtMjY3MCwxNCArMjY3
NywxNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAg
IGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAg
ICAgbG9hZHEgW3QwXSwgdDAKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKKyAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCiAg
ICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIoKQog
ICAgICAgICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQx
CiAgICAgICAgIGxvYWRxIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhd
LCB0MAotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQwLCB0MykKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCkBAIC0zMDAyLDcgKzMwMDks
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wCiAKICAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX2l0ZXJhdG9yLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ss
IC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3cKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBl
cihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRv
ck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNw
YXRjaCkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0
YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNp
emUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkgZW5k
KQogCiAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93OgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQpCkBAIC0zMDYxLDcgKzMwNjgs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wCiAKICAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5n
ZXREb25lU2xvdwotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2Rv
bmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRh
dGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIo
T3BJdGVyYXRvck5leHQsIG1fZG9uZU1vZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERv
bmVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSwgbWFjcm8o
YSwgYiwgYywgZCkgZW5kKQogCiAuZ2V0RG9uZVNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKQEAgLTMwODYsNyArMzA5Myw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3AKICAgICAjIFJlbG9hZCB0
aGUgbmV4dCByZXN1bHQgdG1wIHNpbmNlIHRoZSBnZXRfYnlfaWQgYWJvdmUgbWF5IGhhdmUgY2xv
YmJlcmVkIHQzLgogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQogICAgICMgV2Ug
ZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJl
IHNpbmNlIHdlIHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3JlLgotICAgIHBlcmZvcm1H
ZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVl
UHJvZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNw
YXRjaCkKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1v
ZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRh
LCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLmdldFZh
bHVlU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0
X2dldF92YWx1ZSkKQEAgLTMxNTksNyArMzE2Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
ZW51bWVyYXRvcl9nZXRfYnkKICAgICBsb2FkcSBjb25zdGV4cHIgKChvZmZzZXRJbkJ1dHRlcmZs
eShmaXJzdE91dE9mTGluZU9mZnNldCkpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSlbdDAsIHQy
LCA4XSwgdDIKIAogLmRvbmU6Ci0gICAgdmFsdWVQcm9maWxlKE9wRW51bWVyYXRvckdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAgICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlW
YWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MykKICAgICByZXR1cm4odDIpCiAKIC5nZXRTbG93UGF0
aDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4NCwx
MSArMTI4NCwxMiBAQCBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOCiAg
ICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tjZnJdLCBQQwogZW5kCiAKLW1hY3JvIGFycmF5UHJvZmls
ZShvZmZzZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoKQorbWFjcm8g
YXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0
Y2gxLCBzY3JhdGNoMikKICAgICBjb25zdCBjZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQogICAg
IGNvbnN0IGluZGV4aW5nVHlwZSA9IGNlbGxBbmRJbmRleGluZ1R5cGUgCi0gICAgbG9hZGkgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzY3JhdGNoCi0gICAgc3RvcmVpIHNjcmF0Y2gsIG9m
ZnNldCArIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW21ldGFkYXRhXQorICAg
IGxvYWRwIG9mZnNldFttZXRhZGF0YV0sIHNjcmF0Y2gyCisgICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW2NlbGxdLCBzY3JhdGNoMQorICAgIHN0b3JlaSBzY3JhdGNoMSwgQXJyYXlQcm9m
aWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbc2NyYXRjaDJdCiAgICAgbG9hZGIgSlNDZWxsOjpt
X2luZGV4aW5nVHlwZUFuZE1pc2NbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKQEAgLTE2MTIs
OCArMTYxMyw4IEBAIG1hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1MKICAg
ICBhZGRwIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3aGF0
IGhhcyB0aGUgcGVlcGhvbGUKICAgICBhc3NlcnQobWFjcm8gKG9rKSBicGd0ZXEgdDAsIDAsIG9r
IGVuZCkKICAgICBidHB6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQotICAgIGxvYWRwIENvZGVC
bG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsg
UmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDFdLCB0MwotICAgIGJ0cHogdDMsIC5hcmd1bWVudFBy
b2ZpbGVEb25lICMgV2hlbiB3ZSBjYW4ndCBKSVQsIHdlIGRvbid0IGFsbG9jYXRlIGFueSBhcmd1
bWVudCB2YWx1ZSBwcm9maWxlcy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2Rl
W3QxXSwgdDMKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV92YWx1ZVByb2ZpbGVzICsg
Rml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QzXSwgdDMK
ICAgICBtdWxwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBz
dHJlbmd0aCByZWR1Y3Rpb24hCiAgICAgbHNoaWZ0cCAzLCB0MCAjIG9mZnNldCBvZiBsYXN0IEpT
VmFsdWUgYXJndW1lbnRzIG9uIHRoZSBzdGFjay4KICAgICBhZGRwIHQyLCB0MyAjIHBvaW50ZXIg
dG8gZW5kIG9mIFZhbHVlUHJvZmlsZSBhcnJheSBpbiBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1
ZVByb2ZpbGVzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGVTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI4MjE4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVu
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw3IEBAIEJ5dGVjb2RlU2VxdWVuY2U6
OkJ5dGVjb2RlU2VxdWVuY2UoQ29kZUIKICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAg
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZBcmd1bWVu
dFZhbHVlUHJvZmlsZXMoKTsgKytpKSB7Ci0gICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uID0gY29k
ZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChpKS5icmllZkRlc2NyaXB0aW9uKGxvY2tl
cik7CisgICAgICAgIENTdHJpbmcgZGVzY3JpcHRpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmls
ZUZvckFyZ3VtZW50KGkpLmJyaWVmRGVzY3JpcHRpb24oKTsKICAgICAgICAgaWYgKCFkZXNjcmlw
dGlvbi5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBvdXQucmVzZXQo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxNiw2ICsxOTE2LDkgQEAgcHVibGlj
OgogCiAgICAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhKiByYXJlRGF0YShEZWNvZGVyJiBk
ZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhLmRlY29kZShkZWNvZGVyKTsgfQogCisg
ICAgdW5zaWduZWQgbnVtVmFsdWVQcm9maWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtVmFsdWVQ
cm9maWxlczsgfQorICAgIHVuc2lnbmVkIG51bUFycmF5UHJvZmlsZXMoKSBjb25zdCB7IHJldHVy
biBtX251bUFycmF5UHJvZmlsZXM7IH0KKwogcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
bV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKQEAg
LTE5NDcsNiArMTk1MCw5IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtQ2FsbGVlTG9jYWxzOwog
ICAgIGludCBtX251bVBhcmFtZXRlcnM7CiAKKyAgICB1bnNpZ25lZCBtX251bVZhbHVlUHJvZmls
ZXM7CisgICAgdW5zaWduZWQgbV9udW1BcnJheVByb2ZpbGVzOworCiAgICAgQ2FjaGVkTWV0YWRh
dGFUYWJsZSBtX21ldGFkYXRhOwogCiAgICAgQ2FjaGVkUHRyPENhY2hlZENvZGVCbG9ja1JhcmVE
YXRhPiBtX3JhcmVEYXRhOwpAQCAtMjE1Miw2ICsyMTU4LDggQEAgQUxXQVlTX0lOTElORSBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZQogICAgICwgbV9tZXRhZGF0YShjYWNoZWRDb2RlQmxvY2su
bWV0YWRhdGEoZGVjb2RlcikpCiAgICAgLCBtX2luc3RydWN0aW9ucyhjYWNoZWRDb2RlQmxvY2su
aW5zdHJ1Y3Rpb25zKGRlY29kZXIpKQogCisgICAgLCBtX3ZhbHVlUHJvZmlsZXMoY2FjaGVkQ29k
ZUJsb2NrLm51bVZhbHVlUHJvZmlsZXMoKSkKKyAgICAsIG1fYXJyYXlQcm9maWxlcyhjYWNoZWRD
b2RlQmxvY2subnVtQXJyYXlQcm9maWxlcygpKQogICAgICwgbV9yYXJlRGF0YShjYWNoZWRDb2Rl
QmxvY2sucmFyZURhdGEoZGVjb2RlcikpCiB7CiB9CkBAIC0yMzIyLDYgKzIzMzAsOCBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCCiAgICAgbV9udW1WYXJzID0gY29k
ZUJsb2NrLm1fbnVtVmFyczsKICAgICBtX251bUNhbGxlZUxvY2FscyA9IGNvZGVCbG9jay5tX251
bUNhbGxlZUxvY2FsczsKICAgICBtX251bVBhcmFtZXRlcnMgPSBjb2RlQmxvY2subV9udW1QYXJh
bWV0ZXJzOworICAgIG1fbnVtVmFsdWVQcm9maWxlcyA9IGNvZGVCbG9jay5tX3ZhbHVlUHJvZmls
ZXMuc2l6ZSgpOworICAgIG1fbnVtQXJyYXlQcm9maWxlcyA9IGNvZGVCbG9jay5tX2FycmF5UHJv
ZmlsZXMuc2l6ZSgpOwogICAgIG1fZmVhdHVyZXMgPSBjb2RlQmxvY2subV9mZWF0dXJlczsKICAg
ICBtX2xleGljYWxTY29wZUZlYXR1cmVzID0gY29kZUJsb2NrLm1fbGV4aWNhbFNjb3BlRmVhdHVy
ZXM7CiAgICAgbV9wYXJzZU1vZGUgPSBjb2RlQmxvY2subV9wYXJzZU1vZGU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJl
dmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlX18sIG1fcHJvZmlsZSkKIAogI2RlZmlu
ZSBQUk9GSUxFX1ZBTFVFX0lOKHZhbHVlLCBwcm9maWxlTmFtZSkgZG8geyBcCi0gICAgICAgIGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykucHJvZmlsZU5hbWUubV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLnByb2ZpbGVOYW1lLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBc
CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKIHN0YXRpYyB2b2lkIHRocm93QXJpdHlDaGVja1N0YWNr
T3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBz
Y29wZSkKQEAgLTg4Nyw3ICs4ODcsNyBAQCBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlw
ZSBpdGVyYXRvCiAgICAgSlNDZWxsKiBpdGVyYWJsZSA9IEdFVChieXRlY29kZS5tX2l0ZXJhYmxl
KS5qc1ZhbHVlKCkuYXNDZWxsKCk7CiAgICAgaWYgKGF1dG8gYXJyYXlJdGVyYXRvciA9IGpzRHlu
YW1pY0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yKSkgewogICAgICAgICBpZiAo
YXV0byBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBpdGVyYWJsZSkpIHsKLSAg
ICAgICAgICAgIG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChh
cnJheS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhYmxlUHJv
ZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgICAg
ICAgICAgbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMgPSBtZXRhZGF0YS5t
X2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyB8IEl0ZXJhdGlvbk1vZGU6OkZhc3RBcnJheTsK
ICAgICAgICAgICAgIGF1dG8mIGluZGV4U2xvdCA9IGFycmF5SXRlcmF0b3ItPmludGVybmFsRmll
bGQoSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpOwpAQCAtOTUxLDcgKzk1MSw5IEBAIEpT
Q19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdG8KIEpTQ19ERUZJTkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfZW50ZXIpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBIZWFwOjpo
ZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgIEhlYXAmIGhlYXAg
PSAqSGVhcDo6aGVhcChjb2RlQmxvY2spOworICAgIGhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9j
ayk7CisgICAgaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
KTsKICAgICBFTkQoKTsKIH0KIApAQCAtOTkzLDcgKzk5NSw3IEBAIEpTQ19ERUZJTkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfZW4KICAgICBBU1NFUlQoIWJhc2VWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKTsKICAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9i
YWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIG1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2UtPnN0cnVjdHVyZUlE
KCkpOwogCiAgICAgSlNTdHJpbmcqIG5hbWUgPSBlbnVtZXJhdG9yLT5jb21wdXRlTmV4dChnbG9i
YWxPYmplY3QsIGJhc2UsIGluZGV4LCBtb2RlKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKQEAg
LTEwMTksNyArMTAyMSw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
ZW4KICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6SW5kZXhlZE1vZGU6IHsKICAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkp
KQotICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlE
KGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICBtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+
c3RydWN0dXJlSUQoKSk7CiAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0KGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSkpOwogICAgIH0KICAgICBj
YXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZTogewpAQCAtMTAz
NCw3ICsxMDM2LDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgog
CiAgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlOiB7CiAgICAg
ICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgp
KTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJl
SUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgSlNTdHJpbmcq
IHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgp
KTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRlbnRpZmllcihnbG9i
YWxPYmplY3QpOwogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKQEAgLTEwNjgsNyArMTA3MCw3
IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW4KICAgICB9CiAKICAg
ICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1l
KS5qc1ZhbHVlKCkpOwotICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcElu
QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN0cmluZywgJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlKSkpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlW
YWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN0cmluZywgbWV0YWRhdGEubV9hcnJheVByb2Zp
bGUpKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51bWVy
YXRvcl9oYXNfb3duX3Byb3BlcnR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIERF
RklORV9WSVNJVF9DSElMRFJFTihKU1Njb3BlKTsKIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFj
dEFjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEdldE9yUHV0IGdldE9yUHV0LCBzaXplX3QgZGVwdGgsIGJv
b2wmIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCBSZXNvbHZlT3AmIG9wLCBJbml0aWFsaXphdGlv
bk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIGlmIChzY29wZS0+aXNKU0xleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgIEpTTGV4
aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52
aXJvbm1lbnQqPihzY29wZSk7CkBAIC04MCw4ICs3OSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBh
YnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgaWYgKHNjb3BlLT50eXBlKCkgPT0gTW9kdWxl
RW52aXJvbm1lbnRUeXBlKSB7CiAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1
bGVFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oc2NvcGUpOwogICAg
ICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IG1vZHVsZUVudmly
b25tZW50LT5tb2R1bGVSZWNvcmQoKTsKKyAgICAgICAgICAgIGF1dG8gY2F0Y2hTY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6
OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUltcG9ydChnbG9i
YWxPYmplY3QsIGlkZW50KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOworICAgICAgICAgICAgY2F0Y2hTY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNl
cHRpb24oKTsKICAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CiAgICAgICAgICAgICAgICAg
QWJzdHJhY3RNb2R1bGVSZWNvcmQqIGltcG9ydGVkUmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVS
ZWNvcmQ7CiAgICAgICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZp
cm9ubWVudCA9IGltcG9ydGVkUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOwpAQCAtMzA0LDkg
KzMwNCw2IEBAIEpTT2JqZWN0KiBKU1Njb3BlOjpyZXNvbHZlKEpTR2xvYmFsT2JqZWMKIAogUmVz
b2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBzaXplX3QgZGVwdGhPZmZzZXQsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgR2V0T3JQdXQgZ2V0T3JQdXQsIFJlc29sdmVUeXBlIHVubGlua2VkVHlwZSwgSW5p
dGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSkKIHsKLSAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0KICAgICBSZXNvbHZlT3Agb3AoRHluYW1pYywgMCwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgMCk7CiAgICAgaWYgKHVubGlua2VkVHlwZSA9PSBEeW5hbWljKQogICAgICAgICBy
ZXR1cm4gb3A7CkBAIC0zMTUsNyArMzEyLDYgQEAgUmVzb2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0
UmVzb2x2ZShKU0dsbwogICAgIHNpemVfdCBkZXB0aCA9IGRlcHRoT2Zmc2V0OwogICAgIGZvciAo
OyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgpKSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9
IGFic3RyYWN0QWNjZXNzKGdsb2JhbE9iamVjdCwgc2NvcGUsIGlkZW50LCBnZXRPclB1dCwgZGVw
dGgsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCBvcCwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBSZXNvbHZlT3AoRHluYW1pYywg
MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCkpOwogICAgICAgICBpZiAoc3VjY2VzcykK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICArK2RlcHRoOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk2LDEwICsxNTk2LDYg
QEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKAogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFtcGVkQXJyYXkpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNVaW50MTZBcnJheSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQz
MkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2Vk
RXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBV
bmxpbmtlZEV2YWxDb2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
a1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKQEAgLTE2NTMsNiArMTY0
OSwxMSBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coCiBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNo
OjB4OTU4ZTNlOWQKIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYwogCitEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZhbENvZGVCbG9j
a1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEV2YWxD
b2RlQmxvY2spCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKHVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9E
RUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaykKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKKwogI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKIAogSlNDZWxsKiBWTTo6c2VudGluZWxTZXRCdWNrZXRT
bG93KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjgyMTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpA
QCAtNjAzLDEwICs2MDMsNiBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih1aW50OENsYW1wZWRBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodWludDE2QXJyYXlTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQzMkFycmF5U3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkKLSAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tT
cGFjZSkKLSAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQotICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJlZlNwYWNlKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNwYWNlKQpAQCAtNjc4
LDE5ICs2NzQsMjUgQEAgcHVibGljOgogICAgIAogICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1Nw
YWNlOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb2Rl
QmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91
bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMg
YWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAgLy8gSlNDOjpDb2RlQmxvY2suCi0gICAgICAg
IGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0KLQogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NF
VF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCiAgICAgRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKICAgICBT
cGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKICAgICBTcGFjZUFuZFNldCBwcm9n
cmFtRXhlY3V0YWJsZVNwYWNlOwogCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVIodW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRf
U0VUX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlKQorICAgIERZ
TkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKHVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KKyAgICB2b2lkIGZvckVhY2hVbmxpbmtlZENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1
bmMpCisgICAgeworICAgICAgICBmdW5jKG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UuZ2V0
KCkpOworICAgICAgICBmdW5jKG1fdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLmdldCgp
KTsKKyAgICAgICAgZnVuYyhtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLmdl
dCgpKTsKKyAgICAgICAgZnVuYyhtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLmdldCgp
KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFj
aFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438051</attachid>
            <date>2021-09-13 10:23:30 -0700</date>
            <delta_ts>2021-09-13 15:11:34 -0700</delta_ts>
            <desc>WIP (alternate implementation)</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>12080</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJ
KHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQCBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAorc3Ry
dWN0IFVubGlua2VkQXJyYXlQcm9maWxlOworCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hlcmUg
ZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhhdmUg
c2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93ZXIg
Yml0cy4KIC8vIFRoZXJlIGFyZSA5IHR5cGVkIGFycmF5IHR5cGVzIHRha2luZyB0aGUgYml0cyAx
NiB0byAyNS4KQEAgLTE5NSw2ICsxOTcsNyBAQCBpbmxpbmUgYm9vbCBoYXNTZWVuQ29weU9uV3Jp
dGVBcnJheShBcnJhCiAKIGNsYXNzIEFycmF5UHJvZmlsZSB7CiAgICAgZnJpZW5kIGNsYXNzIENv
ZGVCbG9jazsKKyAgICBmcmllbmQgc3RydWN0IFVubGlua2VkQXJyYXlQcm9maWxlOwogCiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgQXJyYXlQcm9maWxlKCkKQEAgLTI0OSw0ICsyNTIsNDAgQEAgcHJp
dmF0ZToKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKIAor
c3RydWN0IFVubGlua2VkQXJyYXlQcm9maWxlIHsKKyAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSgp
CisgICAgICAgIDogbV9tYXlTdG9yZVRvSG9sZShmYWxzZSkKKyAgICAgICAgLCBtX291dE9mQm91
bmRzKGZhbHNlKQorICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGZhbHNl
KQorICAgICAgICAsIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRydWUpCisgICAgeyB9
CisKKyAgICB2b2lkIHVwZGF0ZShBcnJheVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKKyAgICB7Cisg
ICAgICAgIEFycmF5TW9kZXMgbmV3TW9kZXMgPSBhcnJheVByb2ZpbGUubV9vYnNlcnZlZEFycmF5
TW9kZXMgfCBtX29ic2VydmVkQXJyYXlNb2RlczsKKyAgICAgICAgbV9vYnNlcnZlZEFycmF5TW9k
ZXMgPSBuZXdNb2RlczsKKyAgICAgICAgYXJyYXlQcm9maWxlLm1fb2JzZXJ2ZWRBcnJheU1vZGVz
ID0gbmV3TW9kZXM7CisKKyAgICAgICAgaWYgKG1fbWF5U3RvcmVUb0hvbGUpCisgICAgICAgICAg
ICBhcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZSA9IHRydWU7CisgICAgICAgIGlmIChtX291
dE9mQm91bmRzKQorICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3VuZHMgPSB0cnVl
OworICAgICAgICBpZiAobV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMpCisgICAgICAgICAg
ICBhcnJheVByb2ZpbGUubV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgPSB0cnVlOworICAg
ICAgICBpZiAoIW1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKQorICAgICAgICAgICAgYXJy
YXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CisKKyAgICAg
ICAgbV9tYXlTdG9yZVRvSG9sZSA9IGFycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlOworICAg
ICAgICBtX291dE9mQm91bmRzID0gYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3VuZHM7CisgICAgICAg
IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzID0gYXJyYXlQcm9maWxlLm1fbWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzOworICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA9IGFycmF5UHJvZmlsZS5tX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsKKyAgICB9CisK
KyAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHsgMCB9OworICAgIGJvb2wgbV9t
YXlTdG9yZVRvSG9sZSA6IDE7CisgICAgYm9vbCBtX291dE9mQm91bmRzIDogMTsKKyAgICBib29s
IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDogMTsKKyAgICBib29sIG1fdXNlc09yaWdp
bmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03ODEsNiArNzgxLDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUwogICAgIGlmIChtX21ldGFkYXRhKQogICAgICAgICB2bS5oZWFw
LnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1fbWV0YWRhdGEtPnNpemVJbkJ5dGVzKCkpOwog
CisgICAgdXBkYXRlQWxsUHJlZGljdGlvbnMoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yODkzLDYgKzI4OTUsNyBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxl
UHJlCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgogCisgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
ICAgIGZvckVhY2hWYWx1ZVByb2ZpbGUoWyZdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSwgYm9vbCBp
c0FyZ3VtZW50KSB7CiAgICAgICAgIHVuc2lnbmVkIG51bVNhbXBsZXMgPSBwcm9maWxlLnRvdGFs
TnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVmFsdWVQcm9maWxlOjpu
dW1iZXJPZkJ1Y2tldHMgPT0gMSk7CkBAIC0yOTAxLDExICsyOTA0LDEzIEBAIHZvaWQgQ29kZUJs
b2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Q
cm9maWxlcyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAoaXNBcmd1bWVudCkgewogICAgICAg
ICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAg
ICAgIHVubGlua2VkQ29kZUJsb2NrKCktPm1fdmFsdWVQcm9maWxlc1tpbmRleCsrXS51cGRhdGUo
cHJvZmlsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBy
b2ZpbGUubnVtYmVyT2ZTYW1wbGVzKCkgfHwgcHJvZmlsZS5pc1NhbXBsZWRCZWZvcmUoKSkKICAg
ICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAg
ICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICB1bmxp
bmtlZENvZGVCbG9jaygpLT5tX3ZhbHVlUHJvZmlsZXNbaW5kZXgrK10udXBkYXRlKHByb2ZpbGUp
OwogICAgIH0pOwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKQEAgLTI5MzMsOCArMjkzOCwxMCBA
QCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsQXJyYXlQcmVkaWN0aW9uCiB7CiAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIAorICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKICAgICBmb3JFYWNoQXJyYXlQcm9maWxlKFsmXShBcnJheVByb2ZpbGUmIHByb2ZpbGUpIHsK
ICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCB0aGlzKTsK
KyAgICAgICAgdW5saW5rZWRDb2RlQmxvY2soKS0+bV9hcnJheVByb2ZpbGVzW2luZGV4KytdLnVw
ZGF0ZShwcm9maWxlKTsKICAgICB9KTsKICAgICAKICAgICBmb3JFYWNoQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZShbJl0oQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSYgcHJvZmlsZSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNCArMzE2LDM3IEBA
IGludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9mZnMKICAgICByZXR1cm4gbV9v
dXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwogfQogCit2b2lkIFVubGlu
a2VkQ29kZUJsb2NrOjphbGxvY2F0ZVNoYXJlZFByb2ZpbGVzKCkKK3sKKyAgICBSRUxFQVNFX0FT
U0VSVCghbV9tZXRhZGF0YS0+aXNGaW5hbGl6ZWQoKSk7CisKKyAgICB7CisgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mVmFsdWVQcm9maWxlcyA9IG51bVBhcmFtZXRlcnMoKTsKKyAgICAgICAgaWYg
KG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAorICAg
ICAgICAgICAgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8
X19vcD4oKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUo
Q09VTlQpCisjdW5kZWYgQ09VTlQKKyAgICAgICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyAr
PSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVuPigpICogMzsKKyAgICAgICAg
ICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRl
cmF0b3JOZXh0PigpICogMzsKKyAgICAgICAgfQorCisgICAgICAgIG1fdmFsdWVQcm9maWxlcyA9
IEZpeGVkVmVjdG9yPFVubGlua2VkVmFsdWVQcm9maWxlPihudW1iZXJPZlZhbHVlUHJvZmlsZXMp
OworICAgIH0KKworICAgIGlmIChtX21ldGFkYXRhLT5oYXNNZXRhZGF0YSgpKSB7CisgICAgICAg
IHVuc2lnbmVkIG51bWJlck9mQXJyYXlQcm9maWxlcyA9IDA7CisKKyNkZWZpbmUgQ09VTlQoX19v
cCkgXAorICAgICAgICBudW1iZXJPZkFycmF5UHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50
cmllczxfX29wPigpOworICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxF
KENPVU5UKQorICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxMX0xJTktfSU5G
TyhDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAgICBudW1iZXJPZkFycmF5UHJvZmlsZXMgKz0g
bV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICAgICAgbnVtYmVy
T2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8T3BHZXRCeUlkPigpOwor
CisgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFVubGlua2VkQXJyYXlQcm9m
aWxlPihudW1iZXJPZkFycmF5UHJvZmlsZXMpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNs
dWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNs
dWRlICJERkdFeGl0UHJvZmlsZS5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIlJlZ0V4
cC5oIgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
VW5saW5rZWRNZXRhZGF0YVRhYmxlLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5j
bHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUg
PHd0Zi9CaXRWZWN0b3IuaD4KQEAgLTY4LDggKzcwLDYgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNv
bnN0YW50IDogaW50MzJfdDsKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CiBjbGFz
cyBDYWNoZWRDb2RlQmxvY2s7CiAKLXR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRWYWx1ZVByb2Zp
bGU7Ci10eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkQXJyYXlQcm9maWxlOwogdHlwZWRlZiB1bnNp
Z25lZCBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVu
bGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2Vk
TExJbnRDYWxsTGlua0luZm87CkBAIC00NjIsNiArNDYyLDEwIEBAIHByaXZhdGU6CiAgICAgT3V0
T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAgICAgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJh
bmdlSW5mbz4gbV9leHByZXNzaW9uSW5mbzsKK3B1YmxpYzoKKyAgICB2b2lkIGFsbG9jYXRlU2hh
cmVkUHJvZmlsZXMoKTsKKyAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFZhbHVlUHJvZmlsZT4gbV92
YWx1ZVByb2ZpbGVzOworICAgIEZpeGVkVmVjdG9yPFVubGlua2VkQXJyYXlQcm9maWxlPiBtX2Fy
cmF5UHJvZmlsZXM7CiAKIHByb3RlY3RlZDoKICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcjo6ZmluYWxpegogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29k
ZUJsb2NrLT5jZWxsTG9jaygpIH07CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX2luc3RydWN0aW9u
cyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmFsbG9jYXRl
U2hhcmVkUHJvZmlsZXMoKTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1fbWV0YWRhdGEtPmZpbmFs
aXplKCk7CiAKICAgICAgICAgbV9jb2RlQmxvY2stPm1fanVtcFRhcmdldHMgPSBXVEZNb3ZlKG1f
anVtcFRhcmdldHMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVubGlua2VkTWV0YWRhdGFUYWJsZSk7CiAgICAgfQogCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEJ5dGVjb2RlPgorICAgIHVuc2lnbmVkIG51bUVudHJpZXMoKTsKKworICAgIGJv
b2wgaXNGaW5hbGl6ZWQoKSB7IHJldHVybiBtX2lzRmluYWxpemVkOyB9CisgICAgYm9vbCBoYXNN
ZXRhZGF0YSgpIHsgcmV0dXJuIG1faGFzTWV0YWRhdGE7IH0KKwogcHJpdmF0ZToKICAgICBlbnVt
IEVtcHR5VGFnIHsgRW1wdHkgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3MywxNCBA
QCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFVubGlua2VkTWV0YWRhdGFUCiAgICAgcmV0dXJuIHBy
ZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF0rKzsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIEJ5
dGVjb2RlPgorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om51
bUVudHJpZXMoKQoreworICAgIGNvbnN0ZXhwciBhdXRvIG9wY29kZUlEID0gQnl0ZWNvZGU6Om9w
Y29kZUlEOworICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCAmJiBvcGNvZGVJRCA8IHNfb2Zmc2V0
VGFibGVFbnRyaWVzIC0gMSk7CisgICAgcmV0dXJuIHByZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJ
RF07Cit9CisKIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6
ZUluQnl0ZXMoKQogewogICAgIGlmIChtX2lzRmluYWxpemVkICYmICFtX2hhc01ldGFkYXRhKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAko
cmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVl
UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwxMiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorc3RydWN0IFVubGlua2VkVmFsdWVQcm9maWxlOworCiB0ZW1wbGF0ZTx1bnNpZ25l
ZCBudW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4KIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKKyAg
ICBmcmllbmQgc3RydWN0IFVubGlua2VkVmFsdWVQcm9maWxlOworCiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1iZXJPZkJ1Y2tldHMgPSBudW1iZXJPZkJ1Y2tldHNBcmd1bWVudDsK
ICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mU3BlY0ZhaWxCdWNrZXRzID0g
MTsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJ1Y2tldEluZGV4TWFzayA9IG51bWJl
ck9mQnVja2V0cyAtIDE7CkBAIC0yMTMsNCArMjE3LDE1IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9zaXplOwogfTsKIAorc3RydWN0IFVubGlua2VkVmFsdWVQcm9maWxlIHsKKyAgICBTcGVj
dWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OworCisgICAgdm9pZCB1cGRhdGUo
VmFsdWVQcm9maWxlJiBwcm9maWxlKQorICAgIHsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgbmV3
VHlwZSA9IHByb2ZpbGUubV9wcmVkaWN0aW9uIHwgbV9wcmVkaWN0aW9uOworICAgICAgICBwcm9m
aWxlLm1fcHJlZGljdGlvbiA9IG5ld1R5cGU7CisgICAgICAgIG1fcHJlZGljdGlvbiA9IG5ld1R5
cGU7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNjksNyArMTA2OSw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHBvcExleGljYWxTY29wZShWYXJpYWJsZUVudmly
b25tZW50Tm9kZSopOwogICAgICAgICB2b2lkIHByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9y
TG9vcEl0ZXJhdGlvbihWYXJpYWJsZUVudmlyb25tZW50Tm9kZSosIFJlZ2lzdGVySUQqIGxvb3BT
eW1ib2xUYWJsZSk7CiAgICAgICAgIGludCBsYWJlbFNjb3BlRGVwdGgoKSBjb25zdDsKLSAgICAg
ICAgVW5saW5rZWRBcnJheVByb2ZpbGUgbmV3QXJyYXlQcm9maWxlKCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTQ3LDYgKzE5NDcsMTEgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1DYWxsZWVM
b2NhbHM7CiAgICAgaW50IG1fbnVtUGFyYW1ldGVyczsKIAorcHVibGljOgorICAgIHVuc2lnbmVk
IG1fbnVtVmFsdWVQcm9maWxlczsKKyAgICB1bnNpZ25lZCBtX251bUFycmF5UHJvZmlsZXM7Citw
cml2YXRlOgorCiAgICAgQ2FjaGVkTWV0YWRhdGFUYWJsZSBtX21ldGFkYXRhOwogCiAgICAgQ2Fj
aGVkUHRyPENhY2hlZENvZGVCbG9ja1JhcmVEYXRhPiBtX3JhcmVEYXRhOwpAQCAtMjE1NCw2ICsy
MTU5LDggQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZQogCiAgICAg
LCBtX3JhcmVEYXRhKGNhY2hlZENvZGVCbG9jay5yYXJlRGF0YShkZWNvZGVyKSkKIHsKKyAgICBt
X3ZhbHVlUHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxVbmxpbmtlZFZhbHVlUHJvZmlsZT4oY2FjaGVk
Q29kZUJsb2NrLm1fbnVtVmFsdWVQcm9maWxlcyk7CisgICAgbV9hcnJheVByb2ZpbGVzID0gRml4
ZWRWZWN0b3I8VW5saW5rZWRBcnJheVByb2ZpbGU+KGNhY2hlZENvZGVCbG9jay5tX251bUFycmF5
UHJvZmlsZXMpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgpAQCAtMjMy
OCw2ICsyMzM1LDggQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9jazxDb2RlQgog
ICAgIG1fY29kZUdlbmVyYXRpb25Nb2RlID0gY29kZUJsb2NrLm1fY29kZUdlbmVyYXRpb25Nb2Rl
OwogICAgIG1fY29kZVR5cGUgPSBjb2RlQmxvY2subV9jb2RlVHlwZTsKICAgICBtX2hhc0NoZWNr
cG9pbnRzID0gY29kZUJsb2NrLm1faGFzQ2hlY2twb2ludHM7CisgICAgbV9udW1WYWx1ZVByb2Zp
bGVzID0gY29kZUJsb2NrLm1fdmFsdWVQcm9maWxlcy5zaXplKCk7CisgICAgbV9udW1BcnJheVBy
b2ZpbGVzID0gY29kZUJsb2NrLm1fYXJyYXlQcm9maWxlcy5zaXplKCk7CiAKICAgICBtX21ldGFk
YXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9tZXRhZGF0YS5nZXQoKSk7CiAgICAgbV9y
YXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fcmFyZURhdGEuZ2V0KCkpOwo=
</data>
<flag name="commit-queue"
          id="461356"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438082</attachid>
            <date>2021-09-13 15:46:28 -0700</date>
            <delta_ts>2021-09-15 11:54:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>153734</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMzY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5NSBA
QAorMjAyMS0wOS0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgyOTQ3NTcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgVmFsdWVQcm9maWxlcyBhbmQgQXJyYXlQcm9m
aWxlcyBmb3Igbm9uLWNhbGwgb3Bjb2RlcyBpbnRvCisgICAgICAgIFVubGlua2VkQ29kZUJsb2Nr
LiBUaGlzIHdheSwgdGhlIGRhdGEgaXMgc2hhcmVkIGJldHdlZW4gdGhlIGxpbmtlZCBDb2RlQmxv
Y2tzCisgICAgICAgIG9mIHRoZSBzYW1lIFVubGlua2VkQ29kZUJsb2NrLiBUaGUgcHJvZmlsaW5n
IGJldCBoZXJlIGlzIHRoYXQgd2hlbiB0aGUgc2FtZSBjb2RlCisgICAgICAgIHJ1bnMgaW4gYSBk
aWZmZXJlbnQgZ2xvYmFsIG9iamVjdCwgaXQgbGFyZ2VseSBydW5zIGluIHRoZSBzYW1lIHdheS4g
V2UndmUgbWFkZQorICAgICAgICB0aGlzIHNhbWUgYmV0IGluIG90aGVyIHdheXMgd2l0aCBvdXIg
cHJvZmlsaW5nLCBhbmQgaXQgbGFyZ2VseSBtYWtlcyBzZW5zZQorICAgICAgICB0byBkbyBmb3Ig
VmFsdWVQcm9maWxlIGFuZCBBcnJheVByb2ZpbGUgc2luY2UgdGhleSBib3RoIGhvbGQgZ2xvYmFs
IG9iamVjdAorICAgICAgICBpbmRlcGVuZGVudCBkYXRhLgorICAgICAgICAKKyAgICAgICAgQmVj
YXVzZSBBcnJheVByb2ZpbGVzIGFyZSBub3cgc2hhcmVkIGJldHdlZW4gQ29kZUJsb2NrcywgdGhl
IGV4aXN0aW5nIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzCisgICAgICAgIGJpdCBpcyBz
bGlnaHRseSBoYXJkZXIgdG8gdHJhY2sgbm93LCBzaW5jZSB0aGUgQXJyYXlQcm9maWxlIG1heSBz
ZWUgaW5wdXRzIGZyb20gYSBkaWZmZXJlbnQKKyAgICAgICAgZ2xvYmFsIG9iamVjdCwgYW4gYXJy
YXkgbWF5IGJlIGFuIG9yaWdpbmFsIGFycmF5IGluIG9uZSBsZXhpY2FsIGdsb2JhbCBvYmplY3Qs
CisgICAgICAgIGJ1dCBub3QgYW5vdGhlci4gU28gd2Ugbm93IHRyYWNrIHdoZW4gYW4gQXJyYXlQ
cm9maWxlIHNlZXMgYSBkaWZmZXJlbnQgZ2xvYmFsCisgICAgICAgIG9iamVjdCB0aGFuIHRoZSBs
ZXhpY2FsIGdsb2JhbCBvYmplY3QsIGFuZCB3aGVuIHdlIG9ic2VydmUgZXhpdHMgaW4gdGhlIERG
RywKKyAgICAgICAgd2UgcHJvcGFnYXRlIHRoYXQgYml0IHRvIHRoZSBtX3VzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlcyBiaXQuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gbWFr
ZXMgaXQgc28gd2Ugbm8gbG9uZ2VyIGhvbGQgdGhlIENvZGVCbG9jayBsb2NrIHdoZW4KKyAgICAg
ICAgcHJvY2Vzc2luZyBWYWx1ZVByb2ZpbGVzIGFuZCBBcnJheVByb2ZpbGVzLiBXZSBub3cgYWxs
b3cgbXVsdGlwbGUgY29tcGlsZXIKKyAgICAgICAgdGhyZWFkcyB0byByYWNlIGFnYWluc3QgZWFj
aCBvdGhlciB3aGVuIHVwZGF0aW5nIHRoZXNlIHByb2ZpbGVzLiBUaGlzIGlzIGZpbmUuCisgICAg
ICAgIEl0IG1heSBlbmQgdXAgd2l0aCBpbmNvbXBsZXRlIGRhdGEgaW4gdGhlIHByb2ZpbGVzLCBi
dXQgaXQgd29uJ3QgY29ycnVwdCB0aGVtLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIG1ha2VzIGl0IHNvIHdlIGZpbmFsaXplZCB2aXNpdGVkIFVubGlua2VkQ29kZUJsb2NrcyB0
byBmaW5hbGl6ZQorICAgICAgICB0aGVpciB2YWx1ZSBwcm9maWxlcy4gV2Ugbm8gbG9uZ2VyIGRv
IHRoYXQgd29yayBpbnNpZGUgQ29kZUJsb2NrIGZvciB0aGUKKyAgICAgICAgVmFsdWVQcm9maWxl
cyB0aGF0IFVubGlua2VkQ29kZUJsb2NrIG93bnMuIFRoaXMgYWxzbyBtZWFucyB0aGF0IHdlIGhh
dmUgdG8KKyAgICAgICAgV3JpdGVCYXJyaWVyIFVubGlua2VkQ29kZUJsb2NrIHdoZW4gZXhlY3V0
aW5nIGluIHRoZSBMTEludCwgQmFzZWxpbmUsIGFuZAorICAgICAgICBvdGhlciBhcmVhcywgc3Vj
aCBhcyBPU1IgZXhpdCwgYW5kIGluIHRoZSBHQyB3aGVuIGEgQ29kZUJsb2NrIHdhcyBleGVjdXRp
bmcuCisgICAgICAgIFRoYXQgd2F5IHdlJ3JlIGd1YXJhbnRlZWQgdG8gdmlzaXQgdGhlIFVubGlu
a2VkQ29kZUJsb2NrLCBhZGQgaXQgdG8gdGhlCisgICAgICAgIHZpc2l0ZWQgc2V0LCBhbmQgdGhl
biBmaW5hbGl6ZSBpdCBhdCB0aGUgZW5kIG9mIEdDLgorICAgICAgICAKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIG1ha2VzIGl0IHNvIHRoYXQgaW5zaWRlIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24sIHdlIGZpbmlzaAorICAgICAgICBsaW5raW5nIGJlZm9yZSB3ZSBkbyBhbnl0aGluZyB0aGF0
IGNhbiB0aHJvdyBhbiBleGNlcHRpb24uIEl0J3Mgbm90IHZhbGlkIHRvCisgICAgICAgIGZpbmFs
aXplIGEgQ29kZUJsb2NrIHRoYXQgaXNuJ3QgbGlua2VkLgorICAgICAgICAKKyAgICAgICAgVGhp
cyB3YXMgbWVhc3VyZWQgYXMgYSAwLjUtMSUgc3BlZWR1cCBvbiBTcGVlZG9tZXRlcjIuCisKKyAg
ICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVBy
b2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6YnJpZWZEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YnJp
ZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6QXJyYXlQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlZEFycmF5TW9kZXMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyBjb25z
dCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5U3RvcmVUb0hvbGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om91dE9mQm91bmRzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QXJyYXlQcm9maWxlOjp1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OnNldERvZXNOb3RVc2VPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZWREaWZmZXJlbnRH
bG9iYWxPYmplY3QgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oOgorICAg
ICAgICAoSlNDOjp2YWx1ZVByb2ZpbGVGb3JJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6aW5pdGlhbGl6ZVRlbXBsYXRlT2JqZWN0cyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c2V0TnVtUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldEFycmF5UHJvZmlsZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlZGljdGlvbnNB
bmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxBcnJh
eVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2Zp
bGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2Zp
bGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZVbmxpbmtlZENvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmls
ZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Zm9yRWFjaEFycmF5UHJvZmlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9maWxlOjpoYXNBbnlFeGl0c0F0IGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0dldEJ5SWRNZXRhZGF0YS5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkTW9kZU1ldGFkYXRh
OjpzZXRBcnJheUxlbmd0aE1vZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFs
dWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OnByZWRpY3Rpb24gY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW5J
bXBsKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFsbG9jYXRlU2hhcmVkUHJv
ZmlsZXMpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYXNBbnlFeGl0c0F0IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omhhc0FueUV4aXRzQXQpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6dmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpudW1WYWx1ZVByb2ZpbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6Om51bUFycmF5UHJvZmlsZXMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1ldGFk
YXRhVGFibGUuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjppc0ZpbmFs
aXplZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6aGFzTWV0YWRhdGEp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpudW1FbnRyaWVzKToKKyAgICAgICAg
KiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNs
ZWFyQnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmJyaWVmRGVzY3Jp
cHRpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNr
ZXQpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjbGFzc0luZm8gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2Rl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjp3aXRoUHJvZmlsZSBj
b25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRv
TWFrZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpv
c3JXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpERkc6OmFkanVzdEFuZEp1bXBUb1Rhcmdl
dCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6UHJlZGljdGlvbkluamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAq
IGhlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6
Oml0ZXJhdGVWaWFTdWJzcGFjZXMpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUpOgorICAgICAgICAoSlND
OjpIZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZENvcmVDb25zdHJh
aW50cyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNv
ZGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2VudGVyKToKKyAgICAgICAgKEpTQzo6SklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1
dEJ5VmFsT3B0aW1pemUpOgorICAgICAgICAoSlNDOjpkaXJlY3RQdXRCeVZhbE9wdGltaXplKToK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmspOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
Z2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpwZXJmb3JtTExJbnRHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5
VmFsKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJCeXRl
Y29kZVNlcXVlbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5dGVjb2RlU2VxdWVu
Y2U6OkJ5dGVjb2RlU2VxdWVuY2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6Om51bVZhbHVlUHJvZmlsZXMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6Om51bUFycmF5UHJvZmlsZXMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZSk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjppdGVy
YXRvck5leHRUcnlGYXN0SW1wbCk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NM
T1dfUEFUSCk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6
YWJzdHJhY3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUp
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAg
ICAgICAgKEpTQzo6Vk06OmZvckVhY2hVbmxpbmtlZENvZGVCbG9ja1NwYWNlKToKKyAgICAgICAg
KEpTQzo6Vk06OmZvckVhY2hDb2RlQmxvY2tTcGFjZSk6IERlbGV0ZWQuCisKIDIwMjEtMDktMTMg
IFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXVszMmJpdF0gaW4t
YnktdmFsIGZhaWxzIGluc2lkZSBmb3ItaW4gbG9vcCBhZnRlciBkZWxldGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lv
biAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDE4ICsxMTgsNDEgQEAgdm9pZCBkdW1wQXJyYXlN
b2RlcyhQcmludFN0cmVhbSYgb3V0LCBBcgogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJCaWdV
aW50NjRBcnJheU1vZGUiKTsKIH0KIAotdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKENv
ZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0cnVjdHVyZUlEKQor
ICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291bGQgYmUgY2FsbGluZyBpbnRvIHRoaXMgYXQgdGhl
IHNhbWUgdGltZS4KKyAgICBTdHJ1Y3R1cmVJRCBpZCA9IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsK
KyAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgU3RydWN0dXJlKiBsYXN0
U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCk7Ci0gICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxv
Y2tlciwgY29kZUJsb2NrLCBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBsYXN0
U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KGlkKTsKKyAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBsYXN0U2VlblN0
cnVjdHVyZSk7CiAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKIH0KIAotdm9pZCBBcnJh
eVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkK
K3ZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrKQogeworICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291
bGQgYmUgY2FsbGluZyBpbnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4KKyAgICBTdHJ1Y3R1cmVJ
RCBpZCA9IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1
cm47CisKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0gdW5saW5rZWRDb2RlQmxv
Y2stPmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChpZCk7CisgICAgY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxhc3RTZWVuU3RydWN0dXJlLCBudWxscHRyKTsKKyAgICAKKyAgICBtX2xh
c3RTZWVuU3RydWN0dXJlSUQgPSAwOworfQorCit2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVu
U3RydWN0dXJlKQoreworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsYXN0U2VlblN0cnVj
dHVyZSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Cit9CisKK3ZvaWQgQXJyYXlQcm9maWxl
Ojpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCit7CisgICAgLy8gTXVsdGlwbGUg
dGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLiBUaGF0
IHdvbid0IGxlYWQKKyAgICAvLyB0byBhbnkgZm9ybSBvZiBjb3JydXB0aW9uLCBidXQgY291bGQg
Y2F1c2UgdXMgdG8gZ28gZG93biAhbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nCisgICAgLy8g
cGF0aCBzaW11bHRhbmVvdXNseS4KICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJheU1v
ZGVzRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAgCiAgICAgaWYgKCFtX2Rp
ZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKQEAgLTE0MCw4ICsxNjMsMTEgQEAgdm9pZCBBcnJheVBy
b2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdAogICAgIAogICAgIG1fbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzIHw9CiAgICAgICAgIGxhc3RTZWVuU3RydWN0dXJlLT50eXBlSW5mbygpLmlu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8o
KTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
KGxhc3RTZWVuU3RydWN0dXJlKQorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBs
YXN0U2VlblN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKGxleGljYWxHbG9iYWxP
YmplY3QgJiYgZ2xvYmFsT2JqZWN0ICYmIGdsb2JhbE9iamVjdCAhPSBsZXhpY2FsR2xvYmFsT2Jq
ZWN0KQorICAgICAgICBtX29ic2VydmVkRGlmZmVyZW50R2xvYmFsT2JqZWN0ID0gdHJ1ZTsKKyAg
ICBpZiAoZ2xvYmFsT2JqZWN0CisgICAgICAgICYmICFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkKICAgICAgICAgJiYgIWdsb2JhbE9iamVj
dC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpKQogICAg
ICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwogfQpAQCAtMTYzLDEz
ICsxODksMTMgQEAgdm9pZCBBcnJheVByb2ZpbGU6Om9ic2VydmVJbmRleGVkUmVhZChWTQogICAg
IH0KIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQorQ1N0cmluZyBB
cnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0g
ICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgY29kZUJsb2NrKTsKLSAgICByZXR1
cm4gYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhsb2NrZXIpOworICAgIGNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2spOworICAgIHJldHVybiBicmllZkRlc2NyaXB0aW9u
V2l0aG91dFVwZGF0aW5nKCk7CiB9CiAKLUNTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2Ny
aXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCitDU3RyaW5n
IEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZygpCiB7CiAgICAg
U3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIENvbW1hUHJpbnRlciBjb21tYTsKQEAgLTE4NCw2
ICsyMTAsOCBAQCBDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpCiAgICAg
ICAgIG91dC5wcmludChjb21tYSwgIkludGVyY2VwdCIpOwogICAgIGlmIChtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiT3JpZ2luYWwiKTsK
KyAgICBpZiAobV9vYnNlcnZlZERpZmZlcmVudEdsb2JhbE9iamVjdCkKKyAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiRGlmZmVyZW50R2xvYmFsIik7CiAKICAgICByZXR1cm4gb3V0LnRvQ1N0cmlu
ZygpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIAogLy8gVGhpcyBpcyBhIGJpdGZpZWxkIHdo
ZXJlIGVhY2ggYml0IHJlcHJlc2VudHMgYW4gdHlwZSBvZiBhcnJheSBhY2Nlc3MgdGhhdCB3ZSBo
YXZlIHNlZW4uCiAvLyBUaGVyZSBhcmUgMTkgaW5kZXhpbmcgdHlwZXMgdGhhdCB1c2UgdGhlIGxv
d2VyIGJpdHMuCkBAIC0yMDEsNiArMjAyLDcgQEAgcHVibGljOgogICAgICAgICA6IG1fbWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGZhbHNlKQogICAgICAgICAsIG1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzKHRydWUpCiAgICAgICAgICwgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5n
KGZhbHNlKQorICAgICAgICAsIG1fb2JzZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmplY3QoZmFsc2Up
CiAgICAgewogICAgIH0KICAgICAKQEAgLTIxNywyMiArMjE5LDI3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG9ic2VydmVTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyBtX2xhc3RT
ZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJRDsgfQogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVy
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1
cmUtPmlkKCk7IH0KIAotICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwotICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVy
ZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KFVubGlua2VkQ29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
Q29kZUJsb2NrKik7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29kZUJsb2Nr
KiwgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgdm9pZCBjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24oU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIAogICAgIHZvaWQgb2JzZXJ2ZUFycmF5TW9kZShB
cnJheU1vZGVzIG1vZGUpIHsgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gbW9kZTsgfQogICAgIHZv
aWQgb2JzZXJ2ZUluZGV4ZWRSZWFkKFZNJiwgSlNDZWxsKiwgdW5zaWduZWQgaW5kZXgpOwogCi0g
ICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JikgY29uc3QgeyByZXR1cm4gbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0KLSAgICBib29sIG1heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7
IHJldHVybiBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlczsgfQorICAgIEFycmF5TW9kZXMg
b2JzZXJ2ZWRBcnJheU1vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9vYnNlcnZlZEFycmF5TW9kZXM7
IH0KKyAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJu
IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCi0gICAgYm9vbCBtYXlTdG9y
ZVRvSG9sZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heVN0
b3JlVG9Ib2xlOyB9Ci0gICAgYm9vbCBvdXRPZkJvdW5kcyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKSBjb25zdCB7IHJldHVybiBtX291dE9mQm91bmRzOyB9CisgICAgYm9vbCBtYXlTdG9yZVRv
SG9sZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KKyAgICBib29sIG91dE9m
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkJvdW5kczsgfQogICAgIAotICAgIGJvb2wg
dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNv
bnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOyB9CisgICAgYm9vbCB1
c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlczsgfQorICAgIHZvaWQgc2V0RG9lc05vdFVzZU9yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVzKCkgeyBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOyB9CiAK
LSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Q29kZUJsb2NrKik7Ci0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5n
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOworICAgIGJvb2wgb2JzZXJ2ZWREaWZmZXJlbnRH
bG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkRGlmZmVyZW50R2xvYmFsT2Jq
ZWN0OyB9CisKKyAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oQ29kZUJsb2NrKik7CisgICAg
Q1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCk7CiAgICAgCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC0yNDUsNiArMjUy
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDog
MTsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBib29s
IG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CisgICAgYm9vbCBtX29ic2VydmVkRGlm
ZmVyZW50R2xvYmFsT2JqZWN0IDogMTsKICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1v
ZGVzIHsgMCB9OwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgb3AgOmdl
dF9hcmd1bWVudCwKICAgICAgICAgaW5kZXg6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLiosCiAgICAgfQogCiBvcCA6YXJndW1lbnRfY291bnQsCkBAIC0xODMsNyArMTgzLDcg
QEAgb3AgOnRvX3RoaXMsCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2FjaGVkU3RydWN0dXJl
SUQ6IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKICAgICB9CiAKIG9wIDpjaGVja190ZHosCkBAIC0zMDksNyArMzA5LDcgQEAgb3BfZ3Jv
dXAgOlZhbHVlUHJvZmlsZWRCaW5hcnlPcCwKICAgICAgICAgcmhzOiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUK
KyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLioKICAgICB9CiAKIG9wIDpiaXRub3QsCkBA
IC0zMTgsNyArMzE4LDcgQEAgb3AgOmJpdG5vdCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJl
Z2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qCiAgICAgfQogCiBvcF9ncm91
cCA6VW5hcnlPcCwKQEAgLTM2Myw3ICszNjMsNyBAQCBvcCA6dG9fb2JqZWN0LAogICAgICAgICBt
ZXNzYWdlOiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAg
fQogCiBvcF9ncm91cCA6VmFsdWVQcm9maWxlZFVuYXJ5T3AsCkBAIC0zNzYsNyArMzc2LDcgQEAg
b3BfZ3JvdXAgOlZhbHVlUHJvZmlsZWRVbmFyeU9wLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3Ag
Om5lZ2F0ZSwKQEAgLTQ0NSw3ICs0NDUsNyBAQCBvcCA6aW5fYnlfdmFsLAogICAgICAgICBwcm9w
ZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAg
YXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLiosCiAgICAgfQogCiBvcCA6aW5fYnlfaWQsCkBAIC00NzYsOCArNDc2LDkgQEAgb3Ag
OmdldF9ieV9pZCwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0
YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1v
ZGVNZXRhZGF0YSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAogb3Ag
OmdldF9ieV9pZF93aXRoX3RoaXMsCkBAIC00ODgsNyArNDg5LDcgQEAgb3AgOmdldF9ieV9pZF93
aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFk
YXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X3ZhbF93aXRoX3RoaXMsCkBAIC00
OTksNyArNTAwLDcgQEAgb3AgOmdldF9ieV92YWxfd2l0aF90aGlzLAogICAgICAgICBwcm9wZXJ0
eTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJv
ZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAg
ICB9CiAKIG9wIDpnZXRfYnlfaWRfZGlyZWN0LApAQCAtNTA5LDcgKzUxMCw3IEBAIG9wIDpnZXRf
YnlfaWRfZGlyZWN0LAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsICMgbm90IHVzZWQgaW4g
bGxpbnQKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosICMgbm90IHVzZWQgaW4gbGxp
bnQKICAgICAgICAgc3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgICAgICBvZmZzZXQ6IHVu
c2lnbmVkLAogICAgIH0KQEAgLTUyMCw3ICs1MjEsNyBAQCBvcCA6Z2V0X3Byb3RvdHlwZV9vZiwK
ICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLiosCiAgICAgfQogCiBvcCA6dHJ5X2dldF9ieV9pZCwKQEAgLTUzMCw3ICs1MzEsNyBA
QCBvcCA6dHJ5X2dldF9ieV9pZCwKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfYnlfaWQsCkBAIC01
NzEsOCArNTcyLDggQEAgb3AgOmdldF9ieV92YWwsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUsCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBw
cm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUuKiwKICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQog
CkBAIC01ODMsNyArNTg0LDcgQEAgb3AgOmdldF9wcml2YXRlX25hbWUsCiAgICAgICAgIHByb3Bl
cnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBw
cm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAog
ICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWdu
ZWQsCiAgICAgICAgIHByb3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKQEAgLTYzMiw3ICs2
MzMsNyBAQCBvcCA6cHV0X2J5X3ZhbCwKICAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUs
CisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgfQogCiBvcCA6cHV0
X2J5X3ZhbF93aXRoX3RoaXMsCkBAIC02NTIsNyArNjUzLDcgQEAgb3AgOnB1dF9ieV92YWxfZGly
ZWN0LAogICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9m
aWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpkZWxfYnlfdmFsLApAQCAtODQyLDcg
Kzg0Myw3IEBAIG9wIDpjYWxsLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgY2Fs
bExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0YWls
X2NhbGwsCkBAIC04NTQsNyArODU1LDcgQEAgb3AgOnRhaWxfY2FsbCwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LiosCiAgICAgfQogCiBvcCA6Y2FsbF9ldmFsLApAQCAtODY3LDcgKzg2OCw3IEBAIG9wIDpjYWxs
X2V2YWwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExM
SW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmNhbGxfdmFyYXJncywKQEAg
LTg4MCw4ICs4ODEsOCBAQCBvcCA6Y2FsbF92YXJhcmdzLAogICAgICAgICBmaXJzdFZhckFyZzog
aW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJh
eVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgYXJyYXlQ
cm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5jbHVkaW5nVGhpczogdW5z
aWduZWQsCkBAIC05MDEsOCArOTAyLDggQEAgb3AgOnRhaWxfY2FsbF92YXJhcmdzLAogICAgICAg
ICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
KyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5j
bHVkaW5nVGhpczogdW5zaWduZWQKQEAgLTkyMiw4ICs5MjMsOCBAQCBvcCA6dGFpbF9jYWxsX2Zv
cndhcmRfYXJndW1lbnRzLAogICAgICAgICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAg
bWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y29u
c3RydWN0LApAQCAtOTM0LDggKzkzNSw4IEBAIG9wIDpjb25zdHJ1Y3QsCiAgICAgICAgIGFyZ3Y6
IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0g
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDpjb25zdHJ1Y3RfdmFy
YXJncywKQEAgLTk0OCw4ICs5NDksOCBAQCBvcCA6Y29uc3RydWN0X3ZhcmFyZ3MsCiAgICAgICAg
IGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJh
eVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAor
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNs
dWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtMTAyOCw3ICsxMDI5LDcgQEAgb3AgOmdldF9mcm9tX3Nj
b3BlLAogICAgICAgICAgICAgc3RydWN0dXJlOiBXcml0ZUJhcnJpZXJCYXNlW1N0cnVjdHVyZV0s
CiAgICAgICAgIH0sCiAgICAgICAgIG9wZXJhbmQ6IHVpbnRwdHJfdCwgI29mZnNldCA2Ci0gICAg
ICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwgIyBvZmZzZXQgNworICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUuKiwgIyBvZmZzZXQgNwogICAgIH0sCiAgICAgbWV0YWRhdGFfaW5pdGlhbGl6
ZXJzOiB7CiAgICAgICAgIGdldFB1dEluZm86IDpnZXRQdXRJbmZvLApAQCAtMTA2NSw3ICsxMDY2
LDcgQEAgb3AgOmdldF9mcm9tX2FyZ3VtZW50cywKICAgICAgICAgaW5kZXg6IHVuc2lnbmVkLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAor
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRfdG9fYXJn
dW1lbnRzLApAQCAtMTE3Myw3ICsxMTc0LDcgQEAgb3AgOmVudW1lcmF0b3JfbmV4dCwKICAgICAg
ICAgZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsK
LSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmls
ZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIGVudW1lcmF0b3JNZXRhZGF0YTogRW51bWVyYXRv
ck1ldGFkYXRhLAogICAgIH0KIApAQCAtMTE4Nyw4ICsxMTg4LDggQEAgb3AgOmVudW1lcmF0b3Jf
Z2V0X2J5X3ZhbCwKICAgICAgICAgZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlLiosCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIGVu
dW1lcmF0b3JNZXRhZGF0YTogRW51bWVyYXRvck1ldGFkYXRhLAogICAgIH0KIApAQCAtMTIwMiw3
ICsxMjAzLDcgQEAgb3AgOmVudW1lcmF0b3JfaW5fYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9y
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJh
eVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAg
ICAgfQogCkBAIC0xMjE2LDcgKzEyMTcsNyBAQCBvcCA6ZW51bWVyYXRvcl9oYXNfb3duX3Byb3Bl
cnR5LAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAg
YXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRh
OiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjQ4LDEyICsxMjQ5LDEyIEBAIG9w
IDppdGVyYXRvcl9vcGVuLAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogeworICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZS4q
LAorICAgICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBuZXh0
UHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogVmFsdWVQcm9maWxl
LAogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBpdGVy
YXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlk
TW9kZU1ldGFkYXRhLAotICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0s
CiAgICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3ltYm9sQ2FsbDogbmlsLApAQCAtMTI3MSwx
NCArMTI3MiwxNCBAQCBvcCA6aXRlcmF0b3JfbmV4dCwKICAgICAgICAgc3RhY2tPZmZzZXQ6IHVu
c2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgbmV4dFJlc3VsdFByb2Zp
bGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBkb25lUHJvZmlsZTogVmFsdWVQcm9maWxlLios
CisgICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGl0ZXJhYmxl
UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVy
YXRpb25Nb2RlTWV0YWRhdGEsCi0gICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogQXJyYXlQcm9maWxl
LAogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBuZXh0
UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgICAgICBkb25lTW9kZU1ldGFkYXRhOiBH
ZXRCeUlkTW9kZU1ldGFkYXRhLAotICAgICAgICBkb25lUHJvZmlsZTogVmFsdWVQcm9maWxlLAog
ICAgICAgICB2YWx1ZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKLSAgICAgICAg
dmFsdWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAg
IG5leHRSZXN1bHQ6IEpTVmFsdWUsCkBAIC0xMzIyLDcgKzEzMjMsNyBAQCBvcCA6Z2V0X2ludGVy
bmFsX2ZpZWxkLAogICAgICAgICBpbmRleDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0
YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF9pbnRlcm5hbF9maWVsZCwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2lu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMjAgKzU3LDIwIEBAIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxl
Rm9ySW1wbChCeXRlY28KICAgICBVTlVTRURfUEFSQU0oY2hlY2twb2ludEluZGV4KTsKICAgICBp
ZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9wX2l0ZXJhdG9yX29w
ZW4pIHsKICAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKLSAgICAgICAgY2FzZSBP
cEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuICZtZXRhZGF0YS5tX2l0ZXJhdG9yUHJv
ZmlsZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuICZtZXRh
ZGF0YS5tX25leHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpzeW1ib2xD
YWxsOiByZXR1cm4gbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJ
dGVyYXRvck9wZW46OmdldE5leHQ6IHJldHVybiBtZXRhZGF0YS5tX25leHRQcm9maWxlOwogICAg
ICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAK
ICAgICB9IGVsc2UgaWYgY29uc3RleHByIChCeXRlY29kZU1ldGFkYXRhOjpvcGNvZGVJRCA9PSBv
cF9pdGVyYXRvcl9uZXh0KSB7CiAgICAgICAgIHN3aXRjaCAoY2hlY2twb2ludEluZGV4KSB7Ci0g
ICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gJm1ldGFkYXRh
Lm1fbmV4dFJlc3VsdFByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERv
bmU6IHJldHVybiAmbWV0YWRhdGEubV9kb25lUHJvZmlsZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJh
dG9yTmV4dDo6Z2V0VmFsdWU6IHJldHVybiAmbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CisgICAg
ICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmNvbXB1dGVOZXh0OiByZXR1cm4gbWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9uZTog
cmV0dXJuIG1ldGFkYXRhLm1fZG9uZVByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck5l
eHQ6OmdldFZhbHVlOiByZXR1cm4gbWV0YWRhdGEubV92YWx1ZVByb2ZpbGU7CiAgICAgICAgIGRl
ZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgCi0gICAgICAgIHJldHVybiAmbWV0YWRhdGEubV9wcm9maWxlOworICAgICAgICByZXR1cm4g
bWV0YWRhdGEubV9wcm9maWxlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZU1ldGFk
YXRhPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNiArMzc0LDEwIEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiAKIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAogICAgIEpTU2NvcGUqIHNjb3BlKQogewor
ICAgIC8vIFdlIGNhbid0IGZpbmFsaXplIGEgR0Mgd2hpbGUgaW4gaGVyZSBzaW5jZSB3ZSBuZWVk
IHRvIG1ha2Ugc3VyZSB0bworICAgIC8vIG1ha2Ugc3VyZSBvdXIgVmFsdWVQcm9maWxlcyBhbmQg
QXJyYXlQcm9maWxlcyBhbGwgcG9pbnQgdG8gcHJvcGVyIGxvY2F0aW9ucy4KKyAgICBSRUxFQVNF
X0FTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7IAorCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIGZpbmlzaENyZWF0aW9uQ29tbW9uKHZtKTsKIApAQCAtMzgzLDggKzM4Nywx
MSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIHZt
LmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5yZW1vdmVVbmV4ZWN1dGVkUmFuZ2Uob3duZXJF
eGVjdXRhYmxlLT5zb3VyY2VJRCgpLCBvd25lckV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFy
dE9mZnNldCh2bSksIG93bmVyRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCh2bSkp
OwogCiAgICAgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlID0gb3duZXJFeGVj
dXRhYmxlLT50b3BMZXZlbEV4ZWN1dGFibGUoKTsKLSAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1
bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2st
PmNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpLCB0b3BMZXZlbEV4ZWN1dGFibGUp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworCisgICAgLy8g
V2Ugd2FpdCB0byBpbml0aWFsaXplIHRlbXBsYXRlIG9iamVjdHMgdW50aWwgdGhlIGVuZCBvZiBm
aW5pc2hDcmVhdGlvbiBiZWVjYXVzZSBpdCBjYW4KKyAgICAvLyB0aHJvdy4gV2UgcmVseSBvbiBs
aW5raW5nIHRvIHB1dCB0aGUgQ29kZUJsb2NrIGludG8gYSBjb2hlcmVudCBzdGF0ZSwgc28gd2Ug
Y2FuJ3QgdGhyb3cKKyAgICAvLyB1bnRpbCB3ZSdyZSBhbGwgZG9uZSBsaW5raW5nLgorICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gdGVtcGxhdGVPYmplY3RJbmRpY2VzID0gc2V0Q29uc3RhbnRSZWdpc3Rl
cnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCksIHVubGlua2VkQ29kZUJs
b2NrLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSk7CiAKICAgICAvLyBXZSBh
bHJlYWR5IGhhdmUgdGhlIGNsb25lZCBzeW1ib2wgdGFibGUgZm9yIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgc2luY2Ugd2UgbmVlZCB0byBpbnN0YW50aWF0ZQogICAgIC8vIHRoZSBtb2R1bGUgZW52
aXJvbm1lbnRzIGJlZm9yZSBsaW5raW5nIHRoZSBjb2RlIGJsb2NrLiBXZSByZXBsYWNlIHRoZSBz
dG9yZWQgc3ltYm9sIHRhYmxlIHdpdGggdGhlIGFscmVhZHkgY2xvbmVkIG9uZS4KQEAgLTQzNSw3
ICs0NDIsOCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
Ly8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4K
ICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1
bGVFbnZpcm9ubWVudHM7CiAKLSAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsmXShjb25zdCBhdXRv
JiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAvKm1ldGFkYXRhKi8p
IHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9u
Ki8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFZhbHVlUHJvZmlsZSosIGRlY2x0eXBlKG1ldGFkYXRhLm1f
cHJvZmlsZSk+KTsKICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysr
OwogICAgIH07CiAKQEAgLTQ5OSw5ICs1MDcsOSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTCiAKICAgICAgICAgTElOSyhPcEdldEJ5SWQsIHByb2ZpbGUpCiAKLSAg
ICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0LCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wRW51
bWVyYXRvckluQnlWYWwsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BFbnVtZXJhdG9ySGFzT3du
UHJvcGVydHksIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BFbnVtZXJhdG9yTmV4dCkKKyAgICAg
ICAgTElOSyhPcEVudW1lcmF0b3JJbkJ5VmFsKQorICAgICAgICBMSU5LKE9wRW51bWVyYXRvckhh
c093blByb3BlcnR5KQogICAgICAgICBMSU5LKE9wRW51bWVyYXRvckdldEJ5VmFsLCBwcm9maWxl
KQogCiAgICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlKQpAQCAtNTYzLDcgKzU3MSw2IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGJ5dGVjb2RlLm1fcmVzb2x2ZVR5cGUgIT0gUmVzb2x2ZWRDbG9zdXJlVmFyKTsK
IAogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1f
Z2xvYmFsT2JqZWN0LmdldCgpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlk
ZW50LCBHZXQsIGJ5dGVjb2RlLm1fcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90
SW5pdGlhbGl6YXRpb24pOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAKICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBvcC50
eXBlOwogICAgICAgICAgICAgbWV0YWRhdGEubV9sb2NhbFNjb3BlRGVwdGggPSBvcC5kZXB0aDsK
QEAgLTU5OCw3ICs2MDUsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTCiAKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihi
eXRlY29kZS5tX3Zhcik7CiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0
cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURl
cHRoLCBzY29wZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBl
KCksIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKICAgICAgICAgICAgIG1l
dGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCksIG9wLnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlv
bk1vZGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAg
aWYgKG9wLnR5cGUgPT0gTW9kdWxlVmFyKQpAQCAtNjMyLDcgKzYzOCw2IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7CiAgICAgICAgICAgICBtZXRh
ZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBudWxscHRyOwogICAgICAgICAgICAgUmVzb2x2ZU9wIG9w
ID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBieXRlY29k
ZS5tX3N5bWJvbFRhYmxlT3JTY29wZURlcHRoLnNjb3BlRGVwdGgoKSwgc2NvcGUsIGlkZW50LCBQ
dXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBieXRlY29kZS5tX2dldFB1
dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0
SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9w
LnR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSwgYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0g
R2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8
fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2Fs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKQEAgLTY2NSw3ICs2NzAsNiBAQCBib29sIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICAgICAgLy8gRXZlbiB0
aG91Z2ggdHlwZSBwcm9maWxpbmcgbWF5IGJlIHByb2ZpbGluZyBlaXRoZXIgYSBHZXQgb3IgYSBQ
dXQsIHdlIGNhbiBhbHdheXMgY2xhaW0gYSBHZXQgYmVjYXVzZQogICAgICAgICAgICAgICAgIC8v
IHdlJ3JlIGFic3RyYWN0bHkgInJlYWQiaW5nIGZyb20gYSBKU1Njb3BlLgogICAgICAgICAgICAg
ICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVj
dC5nZXQoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgYnl0ZWNvZGUubV9y
ZXNvbHZlVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7Ci0gICAg
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKICAg
ICAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9wLnR5cGUgPT0gTW9k
dWxlVmFyKQogICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG9wLmxleGljYWxFbnZp
cm9ubWVudC0+c3ltYm9sVGFibGUoKTsKQEAgLTc2MSw2ICs3NjUsNTYgQEAgYm9vbCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogI3VuZGVmIExJTktfRklFTEQKICN1bmRlZiBM
SU5LCiAKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gbnVtYmVyT2ZBcmd1bWVudFZh
bHVlUHJvZmlsZXMoKTsgLy8gVGhlIGZpcnN0IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVz
KCkgcHJvZmlsZXMgYXJlIGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVzCisKKyAgICAgICAgaWYgKG1f
bWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGF1dG8gYXNzaWduID0gWyZdIChWYWx1ZVByb2ZpbGUq
JiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgcHJvZmlsZSA9ICZ1bmxpbmtlZENvZGVCbG9j
ay0+dmFsdWVQcm9maWxlKGluZGV4KyspOworICAgICAgICAgICAgfTsKKworI2RlZmluZSBWSVNJ
VChfX29wKSBcCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0
byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRhLm1fcHJvZmlsZSk7IH0pOworICAgICAgICAg
ICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKKyN1bmRlZiBWSVNJ
VAorCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JPcGVuPihbJl0g
KGF1dG8mIG1ldGFkYXRhKSB7IAorICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0
ZXJhYmxlUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1faXRlcmF0
b3JQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9uZXh0UHJvZmls
ZSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxP
cEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgICAgIGFz
c2lnbihtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBhc3Np
Z24obWV0YWRhdGEubV9kb25lUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFk
YXRhLm1fdmFsdWVQcm9maWxlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gdW5saW5rZWRDb2RlQmxvY2stPm51bVZhbHVlUHJv
ZmlsZXMoKSk7CisgICAgfQorCisgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOworCisgICAgICAgIGF1dG8gYXNzaWduID0gWyZdIChBcnJheVByb2ZpbGUq
JiBwcm9maWxlKSB7CisgICAgICAgICAgICBwcm9maWxlID0gJnVubGlua2VkQ29kZUJsb2NrLT5h
cnJheVByb2ZpbGUoaW5kZXgrKyk7CisgICAgICAgIH07CisKKyAgICAgICAgLy8gV2Ugb25seSBz
aGFyZSBhcnJheSBwcm9maWxlcyBmb3IgdGhlIG9wY29kZXMgaW4gRk9SX0VBQ0hfT1BDT0RFX1dJ
VEhfQVJSQVlfUFJPRklMRS4KKyAgICAgICAgLy8gV2UgZG9uJ3QgeWV0IHNoYXJlIGFycmF5IHBy
b2ZpbGVzIGZvciB0aGluZ3Mgd2l0aCBMTEludCBDYWxsTGlua0luZm9zLgorI2RlZmluZSBWSVNJ
VChfX29wKSBcCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeyBhc3NpZ24obWV0YWRhdGEubV9hcnJheVByb2ZpbGUpOyB9KTsKKyAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX1dJVEhfQVJSQVlfUFJPRklMRShWSVNJVCkKKyN1bmRlZiBWSVNJVAor
CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKKyAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmls
ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHVubGlu
a2VkQ29kZUJsb2NrLT5udW1BcnJheVByb2ZpbGVzKCkpOworICAgIH0KKwogICAgIGlmIChtX3Vu
bGlua2VkQ29kZS0+d2FzQ29tcGlsZWRXaXRoQ29udHJvbEZsb3dQcm9maWxlck9wY29kZXMoKSkK
ICAgICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVy
KCk7CiAKQEAgLTc4MSw2ICs4MzUsOSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTCiAgICAgaWYgKG1fbWV0YWRhdGEpCiAgICAgICAgIHZtLmhlYXAucmVwb3J0RXh0
cmFNZW1vcnlBbGxvY2F0ZWQobV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKSk7CiAKKyAgICBpbml0
aWFsaXplVGVtcGxhdGVPYmplY3RzKHRvcExldmVsRXhlY3V0YWJsZSwgdGVtcGxhdGVPYmplY3RJ
bmRpY2VzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC04NjksMTkgKzkyNiwyMCBAQCBDb2RlQmxvY2s6On5D
b2RlQmxvY2soKQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpz
ZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93
bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSog
dG9wTGV2ZWxFeGVjdXRhYmxlKQorVmVjdG9yPHVuc2lnbmVkPiBDb2RlQmxvY2s6OnNldENvbnN0
YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNv
bnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYgY29u
c3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKQogewogICAgIFZNJiB2bSA9ICptX3ZtOwot
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CiAKKyAgICBWZWN0b3I8
dW5zaWduZWQ+IHRlbXBsYXRlT2JqZWN0SW5kaWNlczsKKwogICAgIEFTU0VSVChjb25zdGFudHMu
c2l6ZSgpID09IGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5zaXplKCkpOwotICAg
IHNpemVfdCBjb3VudCA9IGNvbnN0YW50cy5zaXplKCk7CisgICAgdW5zaWduZWQgY291bnQgPSBj
b25zdGFudHMuc2l6ZSgpOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOwogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLnJlc2l6ZVRvRml0KGNvdW50
KTsKICAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgSlNWYWx1ZSBj
b25zdGFudCA9IGNvbnN0YW50c1tpXS5nZXQoKTsKICAgICAgICAgU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uIHJlcHJlc2VudGF0aW9uID0gY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
W2ldOwogICAgICAgICBzd2l0Y2ggKHJlcHJlc2VudGF0aW9uKSB7CkBAIC05MDUsMTcgKzk2Mywy
NyBAQCB2b2lkIENvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xvbmUtPnNldFJhcmVEYXRhQ29kZUJsb2NrKHRoaXMpOwogCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudCA9IGNsb25lOwotICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGF1dG8qIGRlc2NyaXB0b3IgPSBqc0R5bmFtaWNDYXN0PEpTVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yKj4odm0sIGNlbGwpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvKiB0ZW1wbGF0ZU9iamVjdCA9IHRvcExldmVsRXhlY3V0YWJsZS0+Y3JlYXRlVGVtcGxh
dGVPYmplY3QoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9yKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdGFudCA9IHRlbXBsYXRlT2JqZWN0OwotICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoanNEeW5hbWljQ2FzdDxKU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvcio+KHZtLCBjZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
bXBsYXRlT2JqZWN0SW5kaWNlcy5hcHBlbmQoaSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgbV9jb25zdGFu
dFJlZ2lzdGVyc1tpXS5zZXQodm0sIHRoaXMsIGNvbnN0YW50KTsKICAgICB9CisKKyAgICByZXR1
cm4gdGVtcGxhdGVPYmplY3RJbmRpY2VzOworfQorCit2b2lkIENvZGVCbG9jazo6aW5pdGlhbGl6
ZVRlbXBsYXRlT2JqZWN0cyhTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNv
bnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHRlbXBsYXRlT2JqZWN0SW5kaWNlcykKK3sKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
OiB0ZW1wbGF0ZU9iamVjdEluZGljZXMpIHsKKyAgICAgICAgYXV0byogZGVzY3JpcHRvciA9IGpz
Q2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KG1fY29uc3RhbnRSZWdpc3RlcnNbaV0u
Z2V0KCkpOworICAgICAgICBhdXRvKiB0ZW1wbGF0ZU9iamVjdCA9IHRvcExldmVsRXhlY3V0YWJs
ZS0+Y3JlYXRlVGVtcGxhdGVPYmplY3QoZ2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3IpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICBtX2NvbnN0
YW50UmVnaXN0ZXJzW2ldLnNldCh2bSgpLCB0aGlzLCB0ZW1wbGF0ZU9iamVjdCk7CisgICAgfQog
fQogCiB2b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJuYXRpdmUoVk0mIHZtLCBDb2RlQmxvY2sqIGFs
dGVybmF0aXZlKQpAQCAtOTI4LDggKzk5Niw2IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRBbHRlcm5h
dGl2ZShWTSYgdm0sIEMKIHZvaWQgQ29kZUJsb2NrOjpzZXROdW1QYXJhbWV0ZXJzKHVuc2lnbmVk
IG5ld1ZhbHVlKQogewogICAgIG1fbnVtUGFyYW1ldGVycyA9IG5ld1ZhbHVlOwotCi0gICAgbV9h
cmd1bWVudFZhbHVlUHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+KE9wdGlvbnM6
OnVzZUpJVCgpID8gbmV3VmFsdWUgOiAwKTsKIH0KIAogQ29kZUJsb2NrKiBDb2RlQmxvY2s6OnNw
ZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCkKQEAgLTk5MCw3ICsxMDU2LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OnZpc2l0Q2hpbGRyZW4oVmlzaXRvciYgdgogICAgIHN0cm9uZ2x5VmlzaXRTdHJvbmdS
ZWZlcmVuY2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVu
Y2VzKGxvY2tlciwgdmlzaXRvcik7CiAgICAgCi0gICAgVk06OlNwYWNlQW5kU2V0OjpzZXRGb3Io
KnN1YnNwYWNlKCkpLmFkZCh0aGlzKTsKKyAgICB2bSgpLmNvZGVCbG9ja1NwYWNlLnNldC5hZGQo
dGhpcyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CkBAIC0xNTE3LDcgKzE1ODMs
MzUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogewogICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAKLSAgICB1cGRhdGVBbGxQcmVkaWN0aW9ucygpOworICAgIHsKKyAg
ICAgICAgLy8gV2Ugb25seSB1cGRhdGUgdGhlIHByb2ZpbGVzIHRoYXQgdGhlIFVubGlua2VkQ29k
ZUJsb2NrIGRvZXNuJ3Qgb3duLgorCisgICAgICAgIGlmIChtX21ldGFkYXRhKSB7CisjZGVmaW5l
IFVQREFURShfX29wKSBcCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsm
XSAoYXV0byYgbWV0YWRhdGEpIHsgbWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMpOyB9KTsKKyAgICAgICAgICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0xMSU5UX0NBTExfTElOS19JTkZPKFVQREFURSkKKyN1bmRlZiBVUERB
VEUKKworICAgICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcENhdGNoPihbJl0oYXV0byYg
bWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9idWZmZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2goWyZdKFZhbHVlUHJv
ZmlsZUFuZFZpcnR1YWxSZWdpc3RlciYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgICAgICAgICBsYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZXMobG9ja2VyKS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGxvY2tlcik7CisjZW5kaWYKKyAg
ICAgICAgfQorCisgICAgICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShBcnJh
eUFsbG9jYXRpb25Qcm9maWxlJiBwcm9maWxlKSB7CisgICAgICAgICAgICBwcm9maWxlLnVwZGF0
ZVByb2ZpbGUoKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBi
b29sIGlzRWxpZ2libGVGb3JMTEludERvd25ncmFkZSA9IG1faXNFbGlnaWJsZUZvckxMSW50RG93
bmdyYWRlOwpAQCAtMTYwMyw3ICsxNjk3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogICAgIH07CiAgICAgdXBkYXRlQWN0aXZpdHkoKTsKIAotICAgIFZNOjpT
cGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7CisgICAgdm0uY29k
ZUJsb2NrU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKIAogICAgIC8vIEluIENvZGVCbG9jazo6c2hv
dWxkVmlzaXRTdHJvbmdseSgpIHdlIG1heSBoYXZlIGRlY2lkZWQgdG8gc2tpcCB2aXNpdGluZyB0
aGlzCiAgICAgLy8gY29kZUJsb2NrLiBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgd2UncmUgZG9u
ZSB3aXRoIHRoZSB2ZXJpZmllciBHQy4gU28sIGxldCdzCkBAIC0yNzczLDcgKzI4NjcsNyBAQCBB
cnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlCiAgICAgc3dpdGNoIChpbnN0
cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogI2RlZmluZSBDQVNFMShPcCkgXAogICAgIGNhc2UgT3A6
Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFk
YXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOworICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24tPmFz
PE9wPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJyYXlQcm9maWxlOwogCiAjZGVmaW5lIENBU0UyKE9w
KSBcCiAgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKQEAgLTI3ODUsMTMgKzI4NzksNiBAQCBBcnJh
eVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlCiAjdW5kZWYgQ0FTRTEKICN1bmRl
ZiBDQVNFMgogCi0gICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29kZUlEOiB7Ci0gICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOwotICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICBpZiAobWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm4gJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJh
eVByb2ZpbGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0yOTAwLDE5ICsyOTg3LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRh
dGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICAgICAgICAgIG51bVNhbXBsZXMgPSBWYWx1ZVByb2Zp
bGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBwcm9maWxlcyB0aGF0IGFyZSBl
eHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0LgogICAgICAgICBudW1iZXJPZlNh
bXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7CiAgICAgICAgIGlmIChpc0FyZ3VtZW50KSB7
Ci0gICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwor
ICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBs
ZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAgICAgICAgICAgbnVtYmVyT2ZM
aXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7Ci0gICAgICAgIHByb2ZpbGUuY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CiAgICAgfSk7CiAKICAgICBpZiAobV9tZXRhZGF0YSkgewogICAgICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsmXShhdXRvJiBtZXRhZGF0YSkgewogICAgICAg
ICAgICAgaWYgKG1ldGFkYXRhLm1fYnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9idWZmZXItPmZvckVhY2goWyZdKFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlciYgcHJv
ZmlsZSkgewotICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKQEAgLTI5MzEsMTAgKzMwMTgsOCBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsVmFs
dWVQcm9maWxlUHJlCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25z
KCkKIHsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCiAgICAg
Zm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJyYXlQcm9maWxlJiBwcm9maWxlKSB7Ci0gICAgICAg
IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgdGhpcyk7CisgICAgICAg
IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMpOwogICAgIH0pOwogICAgIAog
ICAgIGZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShBcnJheUFsbG9jYXRpb25Qcm9m
aWxlJiBwcm9maWxlKSB7CkBAIC0zMTY0LDcgKzMyNDksNyBAQCBWYWx1ZVByb2ZpbGUqIENvZGVC
bG9jazo6dHJ5R2V0VmFsdWVQcm9mCiAKICNkZWZpbmUgQ0FTRShPcCkgXAogICAgIGNhc2UgT3A6
Om9wY29kZUlEOiBcCi0gICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rpb24tPmFzPE9wPigpLm1ldGFk
YXRhKHRoaXMpLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIGluc3RydWN0aW9uLT5hczxPcD4o
KS5tZXRhZGF0YSh0aGlzKS5tX3Byb2ZpbGU7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJ
VEhfVkFMVUVfUFJPRklMRShDQVNFKQogCkBAIC0zMTgxLDEwICszMjY2LDEwIEBAIFZhbHVlUHJv
ZmlsZSogQ29kZUJsb2NrOjp0cnlHZXRWYWx1ZVByb2YKICAgICB9CiB9CiAKLVNwZWN1bGF0ZWRU
eXBlIENvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCkKK1NwZWN1bGF0ZWRUeXBlIENvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5
dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIGlmIChWYWx1
ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSA9IHRyeUdldFZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlLT5j
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICByZXR1cm4gU3BlY05vbmU7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSB+Q29kZUJsb2NrKCk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS5nZXQoKTsgfQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZVbmxpbmtlZENvZGVCbG9jaygpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fdW5saW5rZWRDb2RlKTsgfQogCiAgICAgQ1N0cmluZyBp
bmZlcnJlZE5hbWUoKSBjb25zdDsKICAgICBDb2RlQmxvY2tIYXNoIGhhc2goKSBjb25zdDsKQEAg
LTQ3NCwxOSArNDc1LDE2IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1l
bnRWYWx1ZVByb2ZpbGVzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2FyZ3VtZW50VmFsdWVQ
cm9maWxlcy5zaXplKCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fbnVtUGFyYW1ldGVycykg
fHwgIU9wdGlvbnM6OnVzZUpJVCgpKTsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLnNpemUoKTsKKyAgICAgICAgcmV0dXJuIG51bVBhcmFtZXRlcnMoKTsKICAgICB9CiAK
ICAgICBWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KHVuc2lnbmVkIGFyZ3Vt
ZW50SW5kZXgpCiAgICAgewotICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOyAvLyBU
aGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHZhcmlvdXMgSklUIGNvbXBpbGVycyBvciBwbGFj
ZXMgdGhhdCBmaXJzdCBjaGVjayBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcyBiZWZvcmUg
Y2FsbGluZyB0aGlzLgotICAgICAgICBWYWx1ZVByb2ZpbGUmIHJlc3VsdCA9IG1fYXJndW1lbnRW
YWx1ZVByb2ZpbGVzW2FyZ3VtZW50SW5kZXhdOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2soKS0+dmFsdWVQcm9maWxlKGFyZ3VtZW50SW5k
ZXgpOwogICAgIH0KIAogICAgIFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJ
bmRleChCeXRlY29kZUluZGV4KTsKLSAgICBTcGVjdWxhdGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVk
aWN0aW9uRm9yQnl0ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29k
ZUluZGV4KTsKKyAgICBTcGVjdWxhdGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0
ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHZvaWQgZm9yRWFjaFZhbHVlUHJvZmlsZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0
b3ImKTsKQEAgLTkzOSw3ICs5MzcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVBbGxW
YWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMpOwogCi0gICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBGaXhlZFZl
Y3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVkVmVjdG9y
PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKKyAgICBWZWN0b3I8
dW5zaWduZWQ+IHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFy
cmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJl
cHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKTsKKyAgICB2
b2lkIGluaXRpYWxpemVUZW1wbGF0ZU9iamVjdHMoU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxF
eGVjdXRhYmxlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+Jik7CiAKICAgICB2b2lkIHJlcGxhY2VD
b25zdGFudChWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKQEAgLTEw
MTUsNyArMTAxNCw2IEBAIHByaXZhdGU6CiAgICAgLy8gZm9yIERGRyBjb2RlIGJsb2Nrcy4KICAg
ICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIgbV9sYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZXM7CiAjZW5kaWYKLSAgICBGaXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+IG1fYXJn
dW1lbnRWYWx1ZVByb2ZpbGVzOwogCiAgICAgLy8gQ29uc3RhbnQgUG9vbAogICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZihSZWdpc3RlcikgPT0gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiks
IFJlZ2lzdGVyX211c3RfYmVfc2FtZV9zaXplX2FzX1dyaXRlQmFycmllcl9Vbmtub3duKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGlu
ZXMuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjIgKzM5LDIyIEBAIHZv
aWQgQ29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKGNvbnMKIAogICAgIGlmIChtX21ldGFk
YXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBm
YWxzZSk7IH0pOworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsgZnVuYygqbWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOwogCiAgICAg
ICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCiAKICN1bmRlZiBW
SVNJVAogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsgCi0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmFibGVQ
cm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmF0b3JQcm9m
aWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUsIGZh
bHNlKTsKKyAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBmYWxz
ZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSwgZmFsc2Up
OworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOwogICAg
ICAgICB9KTsKIAogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0Pihb
Jl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJl
c3VsdFByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJv
ZmlsZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwg
ZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZSwg
ZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2Up
OworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV92YWx1ZVByb2ZpbGUsIGZhbHNlKTsKICAg
ICAgICAgfSk7CiAgICAgfSAgIAogCkBAIC02NCwxMyArNjQsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVu
Y3RvciYgZnVuYykKIHsKICAgICBpZiAobV9tZXRhZGF0YSkgewotICAgICAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAg
aWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVu
Z3RoKQotICAgICAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlM
ZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7Ci0gICAgICAgIH0pOwotCiAjZGVmaW5lIFZJU0lUMShf
X29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7IGZ1bmMobWV0YWRhdGEubV9hcnJheVByb2ZpbGUpOyB9KTsKKyAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYygqbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGUpOyB9KTsKIAogI2RlZmluZSBWSVNJVDIoX19vcCkgXAogICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fY2Fs
bExpbmtJbmZvLm1fYXJyYXlQcm9maWxlKTsgfSk7CkBAIC04Miw3ICs3Nyw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnMKICN1bmRlZiBWSVNJVDIKIAogICAgICAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlKTsKKyAgICAg
ICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlKTsKICAgICAgICAgfSk7CiAg
ICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9m
aWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZH
RXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4
OSwxOSBAQCBWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4gRXhpdFByb2ZpbGU6OmV4CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBFeGl0UHJvZmlsZTo6aGFzQW55RXhpdHNBdChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2ZyZXF1ZW50RXhpdFNpdGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9mcmVxdWVudEV4aXRTaXRlcy0+c2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKG1fZnJlcXVlbnRFeGl0U2l0ZXMtPmF0KGkpLmJ5dGVjb2Rl
SW5kZXgoKSA9PSBieXRlY29kZUluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV4aXRQcm9maWxlOjpoYXNFeGl0U2l0
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRl
KSBjb25zdAogewogICAgIGlmICghbV9mcmVxdWVudEV4aXRTaXRlcykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCShyZXZpc2lvbiAy
ODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw4IEBAIHB1YmxpYzoKICAgICAvLyBHZXQg
dGhlIGZyZXF1ZW50IGV4aXQgc2l0ZXMgZm9yIGEgYnl0ZWNvZGUgaW5kZXguIFRoaXMgaXMgTyhu
KSwgYW5kIGlzCiAgICAgLy8gbWVhbnQgdG8gb25seSBiZSB1c2VkIGZyb20gZGVidWdnaW5nL3By
b2ZpbGluZyBjb2RlLgogICAgIFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPiBleGl0U2l0ZXNGb3Io
Qnl0ZWNvZGVJbmRleCk7CisKKyAgICBib29sIGhhc0FueUV4aXRzQXQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCkgY29uc3Q7CiAgICAgCiAgICAgLy8gVGhpcyBpcyBP
KG4pIGFuZCBzaG91bGQgYmUgY2FsbGVkIG9uIGxlc3MtZnJlcXVlbnRseSBleGVjdXRlZCBjb2Rl
IHBhdGhzCiAgICAgLy8gaW4gdGhlIGNvbXBpbGVyLiBJdCBzaG91bGQgYmUgc3RyaWN0bHkgY2hl
YXBlciB0aGFuIGJ1aWxkaW5nIGEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkTWV0YWRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNDgsMTEgKzQ4LDYgQEAgc3RydWN0IEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCB7CiB9Owog
c3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YVVuc2V0KSA9PSAxMik7CiAK
LXN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggewotICAgIEFycmF5UHJvZmls
ZSBhcnJheVByb2ZpbGU7Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRh
ZGF0YUFycmF5TGVuZ3RoKSA9PSAxMik7Ci0KIHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhUHJv
dG9Mb2FkIHsKICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsKICAgICBQcm9wZXJ0eU9mZnNl
dCBjYWNoZWRPZmZzZXQ7CkBAIC05MCw3ICs4NSw2IEBAIHVuaW9uIEdldEJ5SWRNb2RlTWV0YWRh
dGEgewogICAgIH07CiAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YURlZmF1bHQgZGVmYXVsdE1vZGU7
CiAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVVuc2V0IHVuc2V0TW9kZTsKLSAgICBHZXRCeUlkTW9k
ZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlMZW5ndGhNb2RlOwogICAgIEdldEJ5SWRNb2RlTWV0
YWRhdGFQcm90b0xvYWQgcHJvdG9Mb2FkTW9kZTsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihH
ZXRCeUlkTW9kZU1ldGFkYXRhKSA9PSAxNik7CkBAIC0xMTMsNyArMTA3LDYgQEAgc3RydWN0IEdl
dEJ5SWRNb2RlTWV0YWRhdGEgewogICAgIHVuaW9uIHsKICAgICAgICAgR2V0QnlJZE1vZGVNZXRh
ZGF0YURlZmF1bHQgZGVmYXVsdE1vZGU7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNl
dCB1bnNldE1vZGU7Ci0gICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCBhcnJh
eUxlbmd0aE1vZGU7CiAgICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFQcm90b0xvYWQgcHJvdG9M
b2FkTW9kZTsKICAgICB9OwogICAgIEdldEJ5SWRNb2RlIG1vZGU7CkBAIC0xMzcsNyArMTMwLDYg
QEAgaW5saW5lIHZvaWQgR2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0VW5zZQogaW5saW5lIHZvaWQg
R2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJyYXlMZW5ndGhNb2RlKCkKIHsKICAgICBtb2RlID0g
R2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoOwotICAgIG5ldyAoJmFycmF5TGVuZ3RoTW9kZS5hcnJh
eVByb2ZpbGUpIEFycmF5UHJvZmlsZTsKICAgICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUgY2Fj
aGUgZnJvbSBldmVyIGhhcHBlbmluZy4KICAgICBoaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIENvbXByZXNz
ZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Q29tcHJlc3NlZExhenlPcGVyYW5kVmFs
dWVQcm9maWxlSG9sZGVyKCkgeyB9CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVI
b2xkZXI6On5Db21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIoKSB7IH0KIAot
dm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIpCit2b2lkIENv
bXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKQogewogICAgIGlmICghbV9kYXRhKQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0
YS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIG1fZGF0YS0+YXQoaSkuY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGxvY2tlcik7CisgICAgICAgIG1fZGF0YS0+YXQoaSkuY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKCk7CiB9CiAKIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBDb21wcmVzc2VkTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCgKQEAgLTg3LDEzICs4NywxMyBAQCBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSogTGF6eU9wZXJhbmRWYWx1CiB9CiAKIFNwZWN1bGF0ZWRUeXBlIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpwcmVkaWN0aW9uKAotICAgIGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYg
a2V5KSBjb25zdAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVy
YW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0CiB7CiAgICAgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSBnZXRJZlByZXNlbnQoa2V5KTsKICAgICBpZiAoIXByb2ZpbGUpCiAg
ICAgICAgIHJldHVybiBTcGVjTm9uZTsKICAgICAKLSAgICByZXR1cm4gcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTM5LDYgKzEzOSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXgK
ICAgICBtYWNybyhPcEVudW1lcmF0b3JHZXRCeVZhbCkgXAogICAgIG1hY3JvKE9wRW51bWVyYXRv
ckluQnlWYWwpIFwKICAgICBtYWNybyhPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSkgXAorICAg
IG1hY3JvKE9wR2V0QnlJZCkgXAogCiAjZGVmaW5lIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZ
X0FMTE9DQVRJT05fUFJPRklMRShtYWNybykgXAogICAgIG1hY3JvKE9wTmV3QXJyYXkpIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEw
OCw4IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW5JbXAKICAgICBleHRy
YU1lbW9yeSArPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYnl0ZVNpemUoKTsKIAogICAg
IHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKGV4dHJhTWVtb3J5KTsKKworICAgIFZN
OjpTcGFjZUFuZFNldDo6c2V0Rm9yKCp0aGlzT2JqZWN0LT5zdWJzcGFjZSgpKS5hZGQodGhpc09i
amVjdCk7CiB9CiAKIERFRklORV9WSVNJVF9DSElMRFJFTihVbmxpbmtlZENvZGVCbG9jayk7CkBA
IC0zMTYsNCArMzE4LDQ1IEBAIGludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9m
ZnMKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQp
OwogfQogCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphbGxvY2F0ZVNoYXJlZFByb2ZpbGVzKCkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9tZXRhZGF0YS0+aXNGaW5hbGl6ZWQoKSk7CisKKyAg
ICB7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFsdWVQcm9maWxlcyA9IG51bVBhcmFtZXRl
cnMoKTsKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKKyNkZWZpbmUg
Q09VTlQoX19vcCkgXAorICAgICAgICAgICAgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzICs9IG1fbWV0
YWRhdGEtPm51bUVudHJpZXM8X19vcD4oKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9X
SVRIX1ZBTFVFX1BST0ZJTEUoQ09VTlQpCisjdW5kZWYgQ09VTlQKKyAgICAgICAgICAgIG51bWJl
ck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVu
PigpICogMzsKKyAgICAgICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRh
LT5udW1FbnRyaWVzPE9wSXRlcmF0b3JOZXh0PigpICogMzsKKyAgICAgICAgfQorCisgICAgICAg
IG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4obnVtYmVyT2ZWYWx1
ZVByb2ZpbGVzKTsKKyAgICB9CisKKyAgICBpZiAobV9tZXRhZGF0YS0+aGFzTWV0YWRhdGEoKSkg
eworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFycmF5UHJvZmlsZXMgPSAwOworCisjZGVmaW5l
IENPVU5UKF9fb3ApIFwKKyAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRh
dGEtPm51bUVudHJpZXM8X19vcD4oKTsKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfQVJS
QVlfUFJPRklMRShDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAgICBudW1iZXJPZkFycmF5UHJv
ZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yTmV4dD4oKTsKKworICAg
ICAgICBtX2FycmF5UHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxBcnJheVByb2ZpbGU+KG51bWJlck9m
QXJyYXlQcm9maWxlcyk7CisgICAgfQorfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseShWTSYpCit7CisgICAgZm9yIChhdXRvJiBwcm9maWxlIDogbV92
YWx1ZVByb2ZpbGVzKQorICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigp
OworICAgIGZvciAoYXV0byYgcHJvZmlsZSA6IG1fYXJyYXlQcm9maWxlcykKKyAgICAgICAgcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24odGhpcyk7CisKKyAgICBWTTo6U3BhY2VBbmRT
ZXQ6OnNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2lu
Y2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiUmVn
RXhwLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRl
ICJVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8d3RmL0JpdFZlY3Rvci5oPgpAQCAtMzI0LDYgKzMyNiwxNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBoYXNFeGl0U2l0ZShsb2NrZXIsIHNpdGUpOwogICAgIH0KIAorICAgIGJvb2wgaGFz
QW55RXhpdHNBdChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQnl0ZWNvZGVJbmRl
eCBieXRlY29kZUluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhpdFByb2Zp
bGUuaGFzQW55RXhpdHNBdChsb2NrZXIsIGJ5dGVjb2RlSW5kZXgpOworICAgIH0KKworICAgIGJv
b2wgaGFzQW55RXhpdHNBdChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIHJldHVybiBo
YXNBbnlFeGl0c0F0KGxvY2tlciwgYnl0ZWNvZGVJbmRleCk7CisgICAgfQorCiAgICAgREZHOjpF
eGl0UHJvZmlsZSYgZXhpdFByb2ZpbGUoKSB7IHJldHVybiBtX2V4aXRQcm9maWxlOyB9CiAjZW5k
aWYKIApAQCAtMzM0LDYgKzM0Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWV0YWRh
dGEtPnNpemVJbkJ5dGVzKCk7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVNoYXJlZFByb2Zp
bGVzKCk7CisKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7CiAKIHByb3Rl
Y3RlZDoKICAgICBVbmxpbmtlZENvZGVCbG9jayhWTSYsIFN0cnVjdHVyZSosIENvZGVUeXBlLCBj
b25zdCBFeGVjdXRhYmxlSW5mbyYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+KTsKQEAg
LTQxOSw2ICs0MzUsOCBAQCBwcml2YXRlOgogICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXI+IG1f
aWRlbnRpZmllcnM7CiAgICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2Nv
bnN0YW50UmVnaXN0ZXJzOwogICAgIEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bj4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb247CisgICAgRml4ZWRWZWN0b3I8
VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJvZmlsZXM7IC8vIFRoZSBmaXJzdCBudW1QYXJhbWV0ZXJz
KCkgYXJlIGFyZ3VtZW50IHByb2ZpbGVzLgorICAgIEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4g
bV9hcnJheVByb2ZpbGVzOwogICAgIHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IEZp
eGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+OwogICAg
IEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25F
eHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHByczsKQEAgLTQ1Niw2ICs0NzQsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZz
ZXQoKSk7CiAgICAgfQogCisgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUodW5zaWduZWQg
aSkgeyByZXR1cm4gbV92YWx1ZVByb2ZpbGVzW2ldOyB9CisgICAgQXJyYXlQcm9maWxlJiBhcnJh
eVByb2ZpbGUodW5zaWduZWQgaSkgeyByZXR1cm4gbV9hcnJheVByb2ZpbGVzW2ldOyB9CisgICAg
dW5zaWduZWQgbnVtVmFsdWVQcm9maWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVQcm9maWxl
cy5zaXplKCk7IH0KKyAgICB1bnNpZ25lZCBudW1BcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1
cm4gbV9hcnJheVByb2ZpbGVzLnNpemUoKTsgfQorCiBwcml2YXRlOgogICAgIHVzaW5nIE91dE9m
TGluZUp1bXBUYXJnZXRzID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBAQCB2b2lkIFVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jb2RlQmxvY2stPmNlbGxMb2NrKCkgfTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1faW5zdHJ1
Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOworICAgICAgICBtX2NvZGVCbG9jay0+YWxs
b2NhdGVTaGFyZWRQcm9maWxlcygpOwogICAgICAgICBtX2NvZGVCbG9jay0+bV9tZXRhZGF0YS0+
ZmluYWxpemUoKTsKIAogICAgICAgICBtX2NvZGVCbG9jay0+bV9qdW1wVGFyZ2V0cyA9IFdURk1v
dmUobV9qdW1wVGFyZ2V0cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRNZXRhZGF0YVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCShyZXZpc2lvbiAyODIxODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIH5VbmxpbmtlZE1l
dGFkYXRhVGFibGUoKTsKIAogICAgIHVuc2lnbmVkIGFkZEVudHJ5KE9wY29kZUlEKTsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGU+CisgICAgdW5zaWduZWQgbnVtRW50cmllcygpOwog
CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKQEAgLTY0LDYgKzY2LDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVbmxpbmtlZE1ldGFkYXRhVGFibGUpOwogICAg
IH0KIAorICAgIGJvb2wgaXNGaW5hbGl6ZWQoKSB7IHJldHVybiBtX2lzRmluYWxpemVkOyB9Cisg
ICAgYm9vbCBoYXNNZXRhZGF0YSgpIHsgcmV0dXJuIG1faGFzTWV0YWRhdGE7IH0KKwogcHJpdmF0
ZToKICAgICBlbnVtIEVtcHR5VGFnIHsgRW1wdHkgfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxl
SW5saW5lcy5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw2ICs3MywxNCBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFVubGlua2VkTWV0YWRhdGFUCiAg
ICAgcmV0dXJuIHByZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF0rKzsKIH0KIAordGVtcGxhdGUg
PHR5cGVuYW1lIEJ5dGVjb2RlPgorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFk
YXRhVGFibGU6Om51bUVudHJpZXMoKQoreworICAgIGNvbnN0ZXhwciBhdXRvIG9wY29kZUlEID0g
Qnl0ZWNvZGU6Om9wY29kZUlEOworICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCAmJiBvcGNvZGVJ
RCA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMSk7CisgICAgcmV0dXJuIHByZXByb2Nlc3NCdWZm
ZXIoKVtvcGNvZGVJRF07Cit9CisKIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0YWRh
dGFUYWJsZTo6c2l6ZUluQnl0ZXMoKQogewogICAgIGlmIChtX2lzRmluYWxpemVkICYmICFtX2hh
c01ldGFkYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJv
ZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3Ry
ZWFtLmg+CiAKQEAgLTQ1LDYgKzQ2LDExIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAg
ICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAgICB7CisgICAgICAgIGNsZWFyQnVja2V0cygp
OworICAgIH0KKworICAgIHZvaWQgY2xlYXJCdWNrZXRzKCkKKyAgICB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKQogICAgICAgICAg
ICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQpAQCAt
NTUsMTcgKzYxLDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgICAgICByZXR1cm4g
bV9idWNrZXRzICsgbnVtYmVyT2ZCdWNrZXRzICsgaTsKICAgICB9CiAgICAgCi0gICAgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8odW5zaWduZWQgYnVja2V0KSBjb25zdAotICAgIHsKLSAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbYnVja2V0XSk7Ci0g
ICAgICAgIGlmICghIXZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAogICAgIHVuc2lnbmVkIG51bWJlck9mU2FtcGxl
cygpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwpAQCAtOTIsOSAr
ODcsOSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgCi0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYgbG9ja2VyKQorICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbigpCiAgICAg
ewotICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgY29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmdQcmludFN0
cmVhbSBvdXQ7CiAgICAgICAgIG91dC5wcmludCgicHJlZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1
bXAobV9wcmVkaWN0aW9uKSk7CkBAIC0xMTgsMTAgKzExMywxMCBAQCBzdHJ1Y3QgVmFsdWVQcm9m
aWxlQmFzZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gVXBkYXRlcyB0aGUgcHJl
ZGljdGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4gTmV2ZXIgY2FsbCB0aGlzIGZyb20gYW55
IHRocmVhZAotICAgIC8vIHRoYXQgaXNuJ3QgZXhlY3V0aW5nIHRoZSBjb2RlLgotICAgIFNwZWN1
bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKQorICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpCiAgICAg
eworICAgICAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaW50byB0aGlz
IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIC8vIFRoZSBpbXBvcnQgcGFydCBpcyB0aGF0IHdl
IGRvbid0IGVuZCB1cCBjb3JydXB0aW5nIGFueSB2YWx1ZXMuCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CiAgICAgICAgICAg
ICBpZiAoIXZhbHVlKQpAQCAtMTU2LDYgKzE1MSw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXQKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1ZVByb2ZpbGUoKSA6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmFs
dWVQcm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlQW5k
VmlydHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDEwICszNiwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
LUFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwg
Ym9vbCBtYWtlU2FmZSkKK0FycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChHcmFwaCYg
Z3JhcGgsIGNvbnN0IENvZGVPcmlnaW4mIG9yaWdpbiwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBB
cnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKIHsKKyAgICBpZiAocHJvZmlsZS0+
b2JzZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmplY3QoKSAmJiBncmFwaC5oYXNBbnlFeGl0c0F0KG9y
aWdpbikpIHsKKyAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBhbiBvcmlnaW5hbCBhcnJheSBzdHJ1
Y3R1cmUsIGJ1dCBmcm9tIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGdsb2JhbCBvYmplY3QgdGhh
biB0aGUgbGV4aWNhbCBnbG9iYWwgb2JqZWN0LiBTbyB3ZSBjb25zZXJ2YXRpdmVseQorICAgICAg
ICAvLyBzYXkgaXQgaXMgbm90IGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZS4KKyAgICAgICAg
cHJvZmlsZS0+c2V0RG9lc05vdFVzZU9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCk7CisgICAgfQor
CiAgICAgQXJyYXk6OkNsYXNzIG5vbkFycmF5OwotICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXMobG9ja2VyKSkKKyAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVzKCkpCiAgICAgICAgIG5vbkFycmF5ID0gQXJyYXk6Ok9yaWdpbmFsTm9u
QXJyYXk7CiAgICAgZWxzZQogICAgICAgICBub25BcnJheSA9IEFycmF5OjpOb25BcnJheTsKQEAg
LTYzLDI3ICs3MCwyNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoY29uc3Qg
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnZlcnRzID0gQXJyYXk6OkFzSXM7CiAKLSAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBpc0FycmF5LCBjb252ZXJ0cywgYWN0aW9uKS53
aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZSh0eXBlLCBpc0FycmF5LCBjb252ZXJ0cywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9m
aWxlLCBtYWtlU2FmZSk7CiAgICAgfTsKIAotICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWQgPSBwcm9m
aWxlLT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKKyAgICBBcnJheU1vZGVzIG9ic2VydmVk
ID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKCk7CiAgICAgc3dpdGNoIChvYnNlcnZlZCkg
ewogICAgIGNhc2UgMDoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VW5wcm9maWxl
ZCk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KToK
LSAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5
OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgbm9u
QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIG5vbkFy
cmF5LCBhY3Rpb24pLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1By
ZWRpY3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShw
cm9maWxlLCBtYWtlU2FmZSk7CiAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoVW5kZWNpZGVkKToKICAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6
V3JpdGUpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0Fy
Z3VtZW50cywgQXJyYXk6OkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0
LCBhY3Rpb24pOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVbmRlY2lkZWQsIEFy
cmF5OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRo
UHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywg
QXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAg
ICAgICAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkp
IHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhVbmRlY2lkZWQpOgot
ICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzKGxvY2tlcikpCisgICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6
OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKICAgICAg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nQXJndW1lbnRzLCBBcnJh
eTo6UG9zc2libHlBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0
aW9uKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0
aW9ucywgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUs
IG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQ
cmVkaWN0aW9ucywgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBt
YWtlU2FmZSk7CiAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9u
QXJyYXlXaXRoSW50MzIpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhBcnJheVdpdGhJbnQzMik6CkBAIC0xMTMsNTAgKzEyMCw1MCBAQCBBcnJheU1vZGUgQXJyYXlN
b2RlOjpmcm9tT2JzZXJ2ZWQoY29uc3QgCiAgICAgICAgIHJldHVybiBoYW5kbGVDb250aWd1b3Vz
TW9kZXMoQXJyYXk6OkNvbnRpZ3VvdXMsIG9ic2VydmVkKTsKIAogICAgIGNhc2UgYXNBcnJheU1v
ZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpOgotICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6
QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNh
c2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9u
QXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMo
Tm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1v
ZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0
aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgbm9uQXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNl
IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToK
LSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJy
YXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFr
ZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIEFy
cmF5OjpBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFr
ZVNhZmUpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlw
ZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBB
cnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpBcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5
OjpBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNh
ZmUpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdp
dGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdp
dGhBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0
b3JhZ2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJv
ZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMs
IGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgYXNBcnJh
eU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdl
KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFy
cmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFy
cmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5v
bkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBl
ZEFycmF5cyhBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdl
LCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUo
cHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50OEFycmF5TW9kZToKLSAgICAgICAgcmV0
dXJuIEFycmF5TW9kZShBcnJheTo6SW50OEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBh
Y3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDE2QXJy
YXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQxNkFycmF5LCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDE2QXJyYXksIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBJbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6SW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpJbnQzMkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFBy
b2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgVWludDhBcnJheU1vZGU6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6
QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDhBcnJheSwgbm9uQXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNl
IFVpbnQ4Q2xhbXBlZEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
VWludDhDbGFtcGVkQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJv
ZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6VWludDhDbGFtcGVkQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBVaW50MTZBcnJheU1v
ZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQxNkFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQxNkFycmF5LCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgIGNhc2UgVWludDMyQXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFy
cmF5OjpVaW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpVaW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQ
cm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEZsb2F0MzJBcnJheU1vZGU6Ci0g
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0MzJBcnJheSwgbm9uQXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXksIG5vbkFycmF5
LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAg
ICAgY2FzZSBGbG9hdDY0QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5
OjpGbG9hdDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmls
ZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFBy
b2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgQmlnSW50NjRBcnJheU1vZGU6Ci0g
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0QXJyYXksIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZl
KTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QmlnSW50NjRBcnJheSwgbm9uQXJy
YXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsK
ICAgICBjYXNlIEJpZ1VpbnQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6QmlnVWludDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRo
UHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6QmlnVWludDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAKICAgICBkZWZhdWx0OgogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIHNlZW4gbXVsdGlwbGUgVHlwZWRBcnJheSB0eXBlcywgb3IgYSBUeXBl
ZEFycmF5IGFuZCBub24tdHlwZWQgYXJyYXksIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB0cnkg
dG8gY29udmVydCB0aGUgb2JqZWN0IHNpbmNlIHlvdSBjYW4ndCBjb252ZXJ0IHR5cGVkIGFycmF5
cy4KICAgICAgICAgaWYgKG9ic2VydmVkICYgQUxMX1RZUEVEX0FSUkFZX01PREVTKQotICAgICAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgbm9uQXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAg
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgbm9uQXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKIAotICAgICAg
ICBpZiAoKG9ic2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJh
eSkpICYmIHByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQotICAg
ICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucyku
d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Cisg
ICAgICAgIGlmICgob2JzZXJ2ZWQgJiBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5v
bkFycmF5KSkgJiYgcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCisgICAg
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zKS53
aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgICAgIAog
ICAgICAgICBBcnJheTo6VHlwZSB0eXBlOwogICAgICAgICBBcnJheTo6Q2xhc3MgYXJyYXlDbGFz
czsKQEAgLTE4Myw3ICsxOTAsNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQo
Y29uc3QgCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFycmF5Q2xhc3MgPSBBcnJheTo6UG9z
c2libHlBcnJheTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJy
YXlDbGFzcywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9m
aWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFz
cywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKHdvcmQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgQXJy
YXlNb2RlIGZyb21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2Zp
bGUqLCBBcnJheTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKKyAgICBzdGF0aWMgQXJyYXlNb2Rl
IGZyb21PYnNlcnZlZChHcmFwaCYsIGNvbnN0IENvZGVPcmlnaW4mLCBBcnJheVByb2ZpbGUqLCBB
cnJheTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKICAgICAKICAgICBBcnJheU1vZGUgd2l0aFNw
ZWN1bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7CkBA
IC0xOTAsMTMgKzE5MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSgpLCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsK
ICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpIGNvbnN0CisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9m
aWxlKEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNwZWN1bGF0aW9uOwogCiAgICAgICAgIGlmICht
YWtlU2FmZSkKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7
Ci0gICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCisgICAg
ICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKCkpCiAgICAgICAgICAgICBteVNw
ZWN1bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbXlT
cGVjdWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKQEAgLTIwNCwyNyArMjA0LDYgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRpb24pOwogICAgIH0K
ICAgICAKLSAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFycmF5OjpDbGFzcyBteUFycmF5Q2xhc3M7Ci0KLSAgICAgICAgaWYgKGlz
SlNBcnJheSgpKSB7Ci0gICAgICAgICAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZpdHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7Ci0gICAg
ICAgICAgICAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJh
eU1vZGVzKGxvY2tlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGhhc1NlZW5Db3B5T25Xcml0ZUFy
cmF5KGFycmF5TW9kZXMpICYmICFoYXNTZWVuV3JpdGFibGVBcnJheShhcnJheU1vZGVzKSkKLSAg
ICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6Ok9yaWdpbmFsQ29weU9uV3Jp
dGVBcnJheTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghaGFzU2VlbkNvcHlPbldyaXRlQXJy
YXkoYXJyYXlNb2RlcykgJiYgaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCi0gICAg
ICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbEFycmF5OwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJy
YXk6OkFycmF5OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbXlBcnJheUNs
YXNzID0gQXJyYXk6OkFycmF5OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG15QXJyYXlD
bGFzcyA9IGFycmF5Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlD
bGFzcyhteUFycmF5Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJv
ZmlsZSwgbWFrZVNhZmUpOwotICAgIH0KLSAgICAKICAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJy
YXk6OlR5cGUgdHlwZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlw
ZSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsK
QEAgLTUzOCw2ICs1MTcsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHUuYXNXb3JkID0g
d29yZDsKICAgICB9CisKKyAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoQXJyYXlQcm9maWxlKiBw
cm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsKKyAgICAgICAgQXJyYXk6OkNsYXNz
IG15QXJyYXlDbGFzczsKKworICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKKyAgICAgICAgICAg
IGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoKSAmJiBiZW5lZml0c0Zy
b21PcmlnaW5hbEFycmF5KCkpIHsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9k
ZXMgPSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAo
aGFzU2VlbkNvcHlPbldyaXRlQXJyYXkoYXJyYXlNb2RlcykgJiYgIWhhc1NlZW5Xcml0YWJsZUFy
cmF5KGFycmF5TW9kZXMpKQorICAgICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJh
eTo6T3JpZ2luYWxDb3B5T25Xcml0ZUFycmF5OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFo
YXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1vZGVzKSAmJiBoYXNTZWVuV3JpdGFibGVBcnJh
eShhcnJheU1vZGVzKSkKKyAgICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6
Ok9yaWdpbmFsQXJyYXk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJv
bVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgIH0KKyAgICAKICAgICAKICAgICBBcnJh
eU1vZGVzIGFycmF5TW9kZXNXaXRoSW5kZXhpbmdTaGFwZXMoSW5kZXhpbmdUeXBlIHNoYXBlKSBj
b25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4
OTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVk
aWN0aW9uRnJvbUZvckNvZGVCbG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewotICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbjsKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsK
LSAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVk
aWN0aW9uRm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgp
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0g
bV92bS0+ZnV6emVyQWdlbnQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2Vu
dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05
ODMsMTAgKzk3OSw5IEBAIHByaXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFy
cmF5UHJvZmlsZSYgcHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
bG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOwotICAgICAgICBib29s
IG1ha2VTYWZlID0gcHJvZmlsZS5vdXRPZkJvdW5kcyhsb2NrZXIpOwotICAgICAgICByZXR1cm4g
QXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2Fm
ZSk7CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jayk7CisgICAgICAgIGJvb2wgbWFrZVNhZmUgPSBwcm9maWxl
Lm91dE9mQm91bmRzKCk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZCht
X2dyYXBoLCBjdXJyZW50Q29kZU9yaWdpbigpLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7
CiAgICAgfQogCiAgICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIwNTgsOSArMjA1
Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmkKICAgICAgICAg
ICAgIC8vIGFyZ3VtZW50cyByZWNlaXZlZCBpbnNpZGUgdGhlIGNhbGxlZS4gQnV0IHRoYXQgcHJv
YmFibHkgd29uJ3QgbWF0dGVyIGZvciBtb3N0CiAgICAgICAgICAgICAvLyBjYWxscy4KICAgICAg
ICAgICAgIGlmIChjb2RlQmxvY2sgJiYgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgVmFs
dWVQcm9maWxlJiBwcm9maWxlID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChh
cmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAgdmFyaWFibGUt
PnByZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChudW1TZXRBcmd1bWVudHMgPj0gbWFuZGF0b3J5TWluaW11bSA/IFNldEFyZ3VtZW50TWF5
YmUgOiBTZXRBcmd1bWVudERlZmluaXRlbHksIE9wSW5mbyh2YXJpYWJsZSkpOwpAQCAtNjMwNSw3
ICs2Mjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgaWYgKHNob3VsZENvbXBpbGVBc0dldEJ5SWQpCiAgICAgICAgICAgICAgICAgaGFu
ZGxlR2V0QnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwg
aWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQsIG5leHRP
cGNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayku
bV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgY291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2UgaXQgb25seSB1
c2VzIHRocmVlIGNoaWxkCiAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5MgpAQCAt
NzA3NSwxMSArNzA2OSw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4s
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1l
bnRzOwogCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0KICAg
ICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFs
UmVnaXN0ZXImIHByb2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHBy
b2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGlj
dGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAg
LTc0MzEsNyArNzQyMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFsbG9jYXRlVW50
YXJnZXRhYmxlQmxvY2soKTsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9j
ayA9IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKIAotICAgICAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUs
IEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0
QXJyYXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAg
ICAgICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhp
dChCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6
Z2V0VmFsdWUpKTsKIAogICAgICAgICAgICAgICAgIHsKQEAgLTgzMjYsNyArODMxOCw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7Ci0gICAgICAgICAgICAgICAgQXJy
YXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgQXJyYXlN
b2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgp
KSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2luX2J5X3ZhbCk7CkBAIC04NDEwLDcgKzg0MDIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9uZXh0
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAg
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9h
cnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQo
Ynl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0KGJ5dGVjb2Rl
Lm1faW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChieXRlY29kZS5t
X2VudW1lcmF0b3IpOwpAQCAtODQ0Miw3ICs4NDM0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfZ2V0X2J5X3Zh
bDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlN
b2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7
CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0
YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKIAogICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODUwNiw3ICs4NDk4
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBj
YXNlIG9wX2VudW1lcmF0b3JfaW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpOwogICAgICAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAg
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9k
ZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsK
IAogICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFzZSkpOwogICAg
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lKSk7CkBA
IC04NTIxLDcgKzg1MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5OiB7CiAgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0
b3JIYXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KGdldChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChi
eXRlY29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODg4MSw3ICs4ODczLDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZQogICAgIH0KIAogICAgIGlmICghY29tcGls
ZWRBc1B1dEJ5SWQpIHsKLSAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9k
ZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3Jp
dGUpOworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCpieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3JpdGUpOwogCiAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9w
ZXJ0eSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNDIsOSArNDA0Miw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUg
PSBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIEFycmF5OjpSZWFkKTsK
ICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgYXJyYXlQcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJsb2NrKTsKLSAg
ICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgYXJy
YXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOworICAgICAgICAgICAgYXJyYXlQcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24ocHJvZmlsZWRCbG9jayk7CisgICAgICAgICAgICBh
cnJheU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChtX2dyYXBoLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGFycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQsIGZhbHNlKTsKICAgICAgICAgICAg
IGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpVbnByb2ZpbGVkKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRm9yIG5vcm1hbCBhcnJheSBvcGVyYXRpb25zLCBpdCBtYWtlcyBzZW5zZSB0byB0
cmVhdCBVbnByb2ZpbGVkCiAgICAgICAgICAgICAgICAgLy8gYWNjZXNzZXMgYXMgRm9yY2VFeGl0
IGFuZCBnZXQgbW9yZSBkYXRhIHJhdGhlciB0aGFuIHVzaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw3ICs1MjAsMTIgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgZXhpdEtpbmQpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzQW55RXhpdHNB
dChjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJh
c2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT51bmxpbmtlZENvZGVCbG9jaygpLT5oYXNB
bnlFeGl0c0F0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKKyAgICB9CisKICAgICBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Io
Tm9kZSogY3VycmVudE5vZGUsIE5vZGUqIG9wZXJhbmROb2RlKTsKICAgICAKICAgICBCbG9ja0lu
ZGV4IG51bUJsb2NrcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzLnNpemUoKTsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsMjYg
KzMzNywyOSBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAg
fQogfQogCi1zdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoVk0mIHZtLCBDQ2FsbEhlbHBlcnMm
IGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkKK3N0YXRpYyB2b2lkIG9zcldyaXRl
QmFycmllcihWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
R1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkKIHsKLSAgICBBc3NlbWJseUhlbHBlcnM6Okp1
bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91dEZl
bmNlKG93bmVyKTsKKyAgICBhdXRvIGVtaXRCYXJyaWVyID0gWyZdIChhdXRvKiBjZWxsKSB7Cisg
ICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihjZWxsKSwgb3du
ZXIpOworICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPcklu
RWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91dEZlbmNlKG93bmVyKTsKKworICAgICAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKT4oJnZt
LCBvd25lcik7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgICAg
IGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRlQmFycmllcikpLCBzY3JhdGNoKTsKKyAgICAg
ICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpPigmdm0sIG93bmVyKTsK
LSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIGppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbk9TUldyaXRlQmFycmllcikpLCBzY3JhdGNoKTsKLSAgICBqaXQuY2FsbChzY3JhdGNoLCBP
cGVyYXRpb25QdHJUYWcpOworICAgICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmso
JmppdCk7CisgICAgfTsKIAotICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0
KTsKKyAgICBlbWl0QmFycmllcihjb2RlQmxvY2spOworICAgIGVtaXRCYXJyaWVyKGNvZGVCbG9j
ay0+dW5saW5rZWRDb2RlQmxvY2soKSk7CiB9CiAKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewog
ICAgIGppdC5tZW1vcnlGZW5jZSgpOwogICAgIAotICAgIGppdC5tb3ZlKAotICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
PmJhc2VsaW5lQWx0ZXJuYXRpdmUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgb3Ny
V3JpdGVCYXJyaWVyKHZtLCBqaXQsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgb3NyV3JpdGVCYXJyaWVyKHZtLCBqaXQsIGppdC5jb2RlQmxvY2soKS0+
YmFzZWxpbmVBbHRlcm5hdGl2ZSgpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86Om5v
bkFyZ0dQUjApOwogCiAgICAgLy8gV2UgYmFycmllciBhbGwgaW5saW5lZCBmcmFtZXMgLS0gYW5k
IG5vdCBqdXN0IHRoZSBjdXJyZW50IGlubGluZSBzdGFjayAtLQogICAgIC8vIGJlY2F1c2Ugd2Ug
ZG9uJ3Qga25vdyB3aGljaCBpbmxpbmVkIGZ1bmN0aW9uIG93bnMgdGhlIHZhbHVlIHByb2ZpbGUg
dGhhdApAQCAtMzY3LDEyICszNzAsOCBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYg
dm0sIENDYWxsCiAgICAgLy8gdGhlIHZhbHVlIHByb2ZpbGUuCiAgICAgSW5saW5lQ2FsbEZyYW1l
U2V0KiBpbmxpbmVDYWxsRnJhbWVzID0gaml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZ0Nv
bW1vbigpLT5pbmxpbmVDYWxsRnJhbWVzLmdldCgpOwogICAgIGlmIChpbmxpbmVDYWxsRnJhbWVz
KSB7Ci0gICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5s
aW5lQ2FsbEZyYW1lcykgewotICAgICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAotICAgICAgICAgICAgICAgICAgICBpbmxp
bmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKLSAgICAgICAgICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICB9CisgICAgICAgIGZvciAo
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5saW5lQ2FsbEZyYW1lcykKKyAg
ICAgICAgICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBpbmxpbmVDYWxsRnJhbWUtPmJhc2Vs
aW5lQ29kZUJsb2NrLmdldCgpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFy
Z0dQUjApOwogICAgIH0KIAogICAgIGF1dG8qIGV4aXRJbmxpbmVDYWxsRnJhbWUgPSBleGl0Lm1f
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTYgKzQ4LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVy
cygpID49IDEpOwogICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKHByb2ZpbGVkQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gV2Ugb25seSBkbyB0aGlzIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBmaXJzdCBibG9jay4g
VGhlIGFyZ3VtZW50cyBmcm9tCiAgICAgICAgICAgICAvLyBvdGhlciBlbnRyeXBvaW50cyBoYXZl
IGFscmVhZHkgYmVlbiBwb3B1bGF0ZWQgd2l0aCB0aGVpciBwcmVkaWN0aW9ucy4KICAgICAgICAg
ICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9yb290VG9Bcmd1bWVudHMuZmluZChtX2dy
YXBoLmJsb2NrKDApKS0+dmFsdWU7CiAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7
IGFyZyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7
ICsrYXJnKSB7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9maWxlJiBwcm9maWxlID0gcHJvZmls
ZWRCbG9jaygpLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChhcmcpOwotICAgICAgICAgICAgICAg
IGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKLSAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7Cisg
ICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVk
aWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MiwxMiArNjIsOSBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZShjb25zdCBBYnN0cmFj
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVW
aWFTdWJzcGFjZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIHZtLmZv
ckVhY2hDb2RlQmxvY2tTcGFjZSgKLSAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNldCkgewot
ICAgICAgICAgICAgc3BhY2VBbmRTZXQuc3BhY2UuZm9yRWFjaExpdmVDZWxsKAotICAgICAgICAg
ICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpTQ2VsbCo+
KGNlbGwpKSk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgdm0uY29kZUJsb2NrU3BhY2Uuc3Bh
Y2UuZm9yRWFjaExpdmVDZWxsKAorICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2Vs
bDo6S2luZCkgeworICAgICAgICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3RhdGlj
X2Nhc3Q8SlNDZWxsKj4oY2VsbCkpKTsKICAgICAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDEwICs1ODMsMTAg
QEAgdm9pZCBIZWFwOjphZGRSZWZlcmVuY2UoSlNDZWxsKiBjZWxsLCBBcgogICAgIH0KIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIHR5cGVuYW1lIENlbGxTZXQ+Ci12b2lkIEhlYXA6
OmZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnMoQ2VsbFNldCYgY2VsbFNldCkK
K3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCB0eXBlbmFtZSBDZWxsU2V0T3JJc29TdWJzcGFj
ZT4KK3ZvaWQgSGVhcDo6ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVycyhDZWxs
U2V0T3JJc29TdWJzcGFjZSYgc2V0T3JTdWJzcGFjZSkKIHsKLSAgICBjZWxsU2V0LmZvckVhY2hN
YXJrZWRDZWxsKAorICAgIHNldE9yU3Vic3BhY2UuZm9yRWFjaE1hcmtlZENlbGwoCiAgICAgICAg
IFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxDZWxsVHlwZSo+KGNlbGwpLT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSh2bSgpKTsK
ICAgICAgICAgfSk7CkBAIC01OTgsMTAgKzU5OCwxMiBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplCiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxp
emVyczxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKCkuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3Bh
Y2UpOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFi
bGU+KHZtKCkuc3ltYm9sVGFibGVTcGFjZSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlv
bmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLmV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29k
ZUJsb2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0
IHRoZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkuCi0gICAgdm0oKS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAg
ICAgIFsmXSAoYXV0byYgc3BhY2UpIHsKLSAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwotICAgICAgICB9
KTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4o
dm0oKS5jb2RlQmxvY2tTcGFjZS5zZXQpOworICAgIHZtKCkuZm9yRWFjaFVubGlua2VkQ29kZUJs
b2NrU3BhY2UoWyZdIChWTTo6U3BhY2VBbmRTZXQqIHNwYWNlQW5kU2V0KSB7CisgICAgICAgIGlm
ICghc3BhY2VBbmRTZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRDb2RlQmxvY2s+KHNwYWNlQW5kU2V0
LT5zZXQpOworICAgIH0pOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8U3RydWN0dXJlUmFyZURhdGE+KHZtKCkuc3RydWN0dXJlUmFyZURhdGFTcGFjZSk7CiAgICAg
ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4odm0oKS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CiAgICAg
aWYgKHZtKCkubV93ZWFrU2V0U3BhY2UpCkBAIC05NzMsNyArOTc1LDcgQEAgdm9pZCBIZWFwOjpk
ZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpCiAgICAgdm0oKS5mb3JFYWNoU2NyaXB0RXhlY3V0
YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKICAg
ICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBzdHVicywgb3RoZXJ3aXNl
IHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZlIGFzIHRoZXkgZ2V0IGRl
bGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9yIGlzIGFzc3VtaW5nIHRoYXQg
Q29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtlZENvZGVCbG9jayBnZXRzIGRl
c3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2Up
IHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgdm0oKS5jb2RlQmxvY2tTcGFjZS5zcGFj
ZS5zd2VlcCgpOwogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29u
ZWRTdHViUm91dGluZXMoKTsKIH0KIApAQCAtMTQ4Niw2ICsxNDg4LDcgQEAgTkVWRVJfSU5MSU5F
IGJvb2wgSGVhcDo6cnVuRW5kUGhhc2UoR0NDbwogICAgIGl0ZXJhdGVFeGVjdXRpbmdBbmRDb21w
aWxpbmdDb2RlQmxvY2tzKHZpc2l0b3IsCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spIHsKICAgICAgICAgICAgIHdyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAg
d3JpdGVCYXJyaWVyKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSk7CiAgICAgICAgIH0p
OwogCiAgICAgdXBkYXRlT2JqZWN0Q291bnRzKCk7CkBAIC0xNTIzLDYgKzE1MjYsNyBAQCBORVZF
Ul9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvCiAgICAgbV9jb2RlQmxvY2tzLT5p
dGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJs
b2NrKSB7CiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAg
IHdyaXRlQmFycmllcihjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgICAgICB9
KTsKICAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7CiAgICAgICAg
IApAQCAtMjg4NiwxMCArMjg5MCwxNCBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygp
CiAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBS
b290TWFya1JlYXNvbjo6Q29kZUJsb2Nrcyk7CiAgICAgICAgICAgICBpdGVyYXRlRXhlY3V0aW5n
QW5kQ29tcGlsaW5nQ29kZUJsb2Nrc1dpdGhvdXRIb2xkaW5nTG9ja3ModmlzaXRvciwKICAgICAg
ICAgICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gaGFuZGxlID0gWyZdIChhdXRvKiBjZWxsKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmlzaXRvci5pc01hcmtlZChjZWxsKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIGNlbGwtPmNlbGxTdGF0ZSgpID09IENlbGxTdGF0ZTo6UG9zc2libHlCbGFjaykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLnZpc2l0QXNDb25zdHJhaW50KGNlbGwp
OworICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAvLyBWaXNpdCB0
aGUgQ29kZUJsb2NrIGFzIGEgY29uc3RyYWludCBvbmx5IGlmIGl0J3MgYmxhY2suCi0gICAgICAg
ICAgICAgICAgICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykKLSAgICAgICAgICAg
ICAgICAgICAgICAgICYmIGNvZGVCbG9jay0+Y2VsbFN0YXRlKCkgPT0gQ2VsbFN0YXRlOjpQb3Nz
aWJseUJsYWNrKQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci52aXNpdEFzQ29uc3Ry
YWludChjb2RlQmxvY2spOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUoY29kZUJsb2NrKTsK
KyAgICAgICAgICAgICAgICAgICAgaGFuZGxlKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pKSwKICAgICAgICAgQ29uc3RyYWlu
dFZvbGF0aWxpdHk6OlNlbGRvbUdyZXllZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwMiw3ICszMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4uLik7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfc2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46
OnZhbHVlLCB2b2lkPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNs
dHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9p
ZD4KICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0
ZWNvZGUpOwogCiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJl
Z2lzdGVySUQgY2VsbEdQUiwgQXJyYXlQcm9maWxlKiwgUmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyODIx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1pbmxpbmUgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1
ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9m
aWxlZE9wY29kZShPcCBieXRlY29kZSkKK2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2
YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShP
cCBieXRlY29kZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZWdUMCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExOTQsNiArMTE5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3Ry
dWN0aW8KICAgICAgICAgZW1pdEluaXRSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChq
KSk7CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrKTsKKyAgICBlbWl0V3JpdGVC
YXJyaWVyKG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpKTsKIAogICAgIGVtaXRFbnRl
ck9wdGltaXphdGlvbkNoZWNrKCk7CiAjZWxzZQpAQCAtMTI0NSwxNyArMTI0NiwyOSBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaW5pdERvbmUubGluaygm
aml0KTsKIAogICAgIC8vIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2spLgorICAgIC8vIGVt
aXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpLgogICAgIGpp
dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRH
UFIxKTsKLSAgICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJy
YW5jaCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpOwotCiAgICAgaml0Lm1vdmUoY2Fu
QmVPcHRpbWl6ZWRHUFIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4KLSAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1Bh
dGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKLSAgICBDYWxsIG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwgPSBqaXQuY2FsbChPcGVyYXRp
b25QdHJUYWcpOwotCisgICAgQ2FsbCBvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsMTsKKyAgICBD
YWxsIG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwyOworICAgIHsKKyAgICAgICAgSnVtcCBvd25l
cklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2godm0sIGFyZ3VtZW50R1BS
MSwgYXJndW1lbnRHUFIyKTsKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOworICAgICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgICAgICBvcGVyYXRpb25Xcml0ZUJh
cnJpZXJDYWxsMSA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgICAgIGppdC5sb2Fk
UHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsK
KyAgICAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOworICAgIH0KKyAg
ICB7CisgICAgICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBDb2RlQmxvY2s6
Om9mZnNldE9mVW5saW5rZWRDb2RlQmxvY2soKSksIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIEp1
bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1
bWVudEdQUjEsIGFyZ3VtZW50R1BSMik7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsK
KyAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICAgICAgb3BlcmF0aW9u
V3JpdGVCYXJyaWVyQ2FsbDIgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgICAgICBv
d25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CisgICAgfQogICAgIGppdC5tb3Zl
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBjYW5CZU9wdGltaXplZEdQUik7IC8vIHJlc3Rv
cmUuCiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxp
bmsoJmppdCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBDYWxsIG9wZXJhdGlvbk9wdGlt
aXplQ2FsbDsKQEAgLTEyODksNyArMTMwMiw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSkkKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwsIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgp
KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwxLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKSk7
CisgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsMiwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCkpOwog
I2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChPcHRpb25zOjp1c2VERkdKSVQoKSkKICAgICAg
ICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25PcHRpbWl6ZUNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uT3B0aW1pemUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAyOCwxMCArMTAyOCw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWxP
cHRpbWkKICAgICAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9k
ZSgpKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkg
ewotICAgICAgICAgICAgICAgIGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxv
Y2ssIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChw
cm9maWxlKQorICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIHJlcGF0Y2hBcnJh
eVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwg
KnN0dWJJbmZvLCBQdXRLaW5kOjpOb3REaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTA5OCwxMCArMTA5Niw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZv
aWQgZGlyZWN0UHV0QnlWYWwKICAgICBpZiAoIWlzQ29weU9uV3JpdGUoYmFzZU9iamVjdC0+aW5k
ZXhpbmdNb2RlKCkpICYmIHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkg
ewotICAgICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAg
ICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1
cmUpOwogICAgICAgICAgICAgcmVwYXRjaEFycmF5UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8sIFB1dEtpbmQ6OkRpcmVjdCwg
ZWNtYU1vZGUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQxMiwxMCArMjQwOCw4IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVYKICAgICBpZiAoYmFzZVZhbHVlLmlz
Q2VsbCgpICYmIHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChz
dHViSW5mby0+Y29uc2lkZXJDYWNoaW5nR2VuZXJpYyh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
KSB7Ci0gICAgICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIHBy
b2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0
dXJlKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwcm9maWxlKQorICAgICAgICAg
ICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIHN0cnVj
dHVyZSk7CiAgICAgICAgICAgICByZXBhdGNoQXJyYXlHZXRCeVZhbChnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbyk7CiAgICAgICAgIH0KICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
MSw3ICsyNDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RyCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdp
c3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwg
cHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJCiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CiAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmls
ZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9m
aWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07CiAgICAgICAgICsrbV9n
ZXRCeVZhbEluZGV4OwpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgQXJy
YXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5
UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExv
YWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAgICAgZW1p
dExvYWQodmFsdWUsIHJlZ1Q1LCByZWdUNCk7CkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSQogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fdmFsdWU7CiAgICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9kZShieXRlY29kZSk7CiAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwot
ICAgICAgICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgICAgICBwcm9m
aWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVj
dCkKQEAgLTYyMiwxMSArNjIyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0
IEluc3RydQogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAotICAgIGlmICgqaWRlbnQgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAg
ICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1YWwsIEFic29sdXRl
QWRkcmVzcygmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSksIFRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7Ci0gICAgICAgIGVt
aXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgJm1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHJlZ1QyKTsKLSAgICAgICAgbm90QXJy
YXlMZW5ndGhNb2RlLmxpbmsodGhpcyk7Ci0gICAgfQorICAgIGlmICgqaWRlbnQgPT0gbV92bS0+
cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAg
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSwgcmVnVDIpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCk7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCkBAIC03OTcsNyAr
Nzk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCBy
ZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2UsIHJlZ1QxKTsKQEAgLTgyMCw3ICs4MTcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZh
bEluZGV4KytdOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRl
Y29kZS5tX3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdAogICAgIGlmICho
YXNBbnlTbG93Q2FzZXMoaXRlcikpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZTsKIAogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBA
IC00MzksNyArNDM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cgogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdU
MSk7CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwo
Y29uc3QgSQogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAgICAgICAgIGVjbWFN
b2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIHByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisgICAgICAgIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMTEwOCwxMSArMTEwOCw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICAKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKICAgICAKLSAgICBpZiAoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFs
LCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwot
ICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMSk7Ci0gICAg
ICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMpOwotICAgIH0KKyAgICBpZiAoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUsIHJlZ1QxKTsKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMCk7CiAKQEAgLTE1MTEsNyArMTUwOCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTE1MzgsNyArMTUzNSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW4KICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
aW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CiAKQEAgLTIzOTMsNyArMjM5MCw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICB9CiAKICAgICBzdGF0aWNf
YXNzZXJ0KFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzID09IDEpOwotICAgIHN0b3JlNjQo
cmVnVDAsIEFkZHJlc3MobWV0YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9w
cm9maWxlKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhtZXRhZGF0YUdQUiwgT0JKRUNUX09GRlNF
VE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSwgcmVnVDEpOworICAgIHN0b3JlNjQocmVnVDAsIEFk
ZHJlc3MocmVnVDEsIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAKICAg
ICByZXQoKTsKIApAQCAtMjQ0OSw3ICsyNDQ3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSQogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9u
UHRyVGFnKTsKICAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVF
eGNlcHRpb25DaGVjayh2bSk7CiAKLSAgICBqaXQuc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2Zp
bGUpKSk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
ciwgT0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSwgR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpOworICAgIGppdC5zdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwog
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3Rlcik7CiAKICNpZiBDUFUoWDg2XzY0KQpAQCAtMjg1NCw3ICsyODUzLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKAogICAgIFZpcnR1YWxS
ZWdpc3RlciBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXg7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHBy
b3BlcnR5TmFtZSA9IGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOwotICAgIEFycmF5UHJvZmlsZSog
cHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHBy
b2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNl
czsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgaW5s
aW5lIEpTVmFsdWUgZ2V0T3BlcmFuZChDYWxsRnJhbWUqIGNhbAogICAgIH0gd2hpbGUgKGZhbHNl
KQogCiAjZGVmaW5lIExMSU5UX1BST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
aykubV9wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAg
ICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChjYWxsRnJh
bWUsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIFwKQEAgLTc2MSw3ICs3NjEsNyBAQCBzdGF0
aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKCiAgICAgdm0uaGVhcC53cml0ZUJh
cnJpZXIoY29kZUJsb2NrKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJ
RChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RhdGljIEpTVmFsdWUgcGVy
Zm9ybUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJs
b2NrLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04
MjQsOCArODI0LDkgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdAog
ICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFz
ZVZhbHVlKSAmJiBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAg
ewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9j
ayk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJheVByb2ZpbGUpOwogICAgICAgICAg
ICAgbWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2
ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9
CiAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQpAQCAtODQx
LDcgKzg0Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxM
SW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQs
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7CiAgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTg1NywxMCArODU4LDEwIEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl8KICAgICBpZiAoIWl0ZXJh
dG9yLmlzT2JqZWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50
R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgbnVsbHB0cik7CiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fbmV4dFByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgIExMSU5UX0VORCgpOwogfQogCkBAIC04NzcsMTAgKzg3OCwxMCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09i
amVjdCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFk
YXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJ
bnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZt
LnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgbnVsbHB0
cik7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgZG9uZVJlZ2lzdGVyID0gcmVz
dWx0OwotICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1
Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1fZG9uZVByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQogCkBAIC04OTQsMTAgKzg5NSwxMCBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgUmVnaXN0ZXImIHZh
bHVlUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CiAg
ICAgSlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IHZhbHVlUmVnaXN0ZXIuanNWYWx1ZSgpOwogCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRh
ZGF0YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1M
TEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwg
dm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEsIG51
bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIHZhbHVlUmVnaXN0ZXIg
PSByZXN1bHQ7Ci0gICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmls
ZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spLm1fdmFsdWVQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAtMTAyNCw3ICsxMDI1
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTQogICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMklu
ZGV4KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJy
YXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAg
ICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoYXNTdHJp
bmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpIHsKQEAgLTE0MjksNyArMTQzMCw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwKICAgICBMTElOVF9CRUdJTigp
OwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFsPigpOwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3Byb3BlcnR5KSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKSwgZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkp
KTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVj
dCwgZwogICAgICAgICBtb3ZlIHBheWxvYWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQy
KQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwg
dDApCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQx
LCB0MCwgdDIpCiAgICAgICAgIGdldChtX2RzdCwgdDIpCiAgICAgICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQpAQCAtODUsNyArODUsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBv
cGNvZGVTdHJ1CiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9y
ZWkgcjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCByMSwgcjAsIHQzKQogICAgIGRpc3BhdGNoKCkKIAogZW5kCkBA
IC02NzcsOSArNjc3LDEwIEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmly
b24KICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQotICAgIHN0b3JlaSB0YWcsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBUYWdPZmZz
ZXRbbWV0YWRhdGFdCi0gICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQorbWFj
cm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB0YWcs
IHBheWxvYWQsIHNjcmF0Y2gpCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
cHJvZmlsZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJv
ZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3NjcmF0Y2hdCisgICAgc3RvcmVpIHBheWxvYWQs
IFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtzY3JhdGNoXQogZW5kCiAK
IApAQCAtMTQzNyw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRf
ZGlyZWN0LAogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1
XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJ
ZERpcmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAs
IHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0
MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpA
QCAtMTQ1OCwzNyArMTQ1OSwyOSBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVT
dHJ1Y3QsCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zm
c2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAs
IHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgdDIsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFByb3Rv
TG9hZDoKLSAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5v
cEdldEJ5SWRBcnJheUxlbmd0aAorICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6
OlByb3RvTG9hZCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QzXSwgdDEKICAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKICAgICBiaW5lcSB0
MywgdDEsIHNsb3dMYWJlbAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVt
b2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAg
bG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9M
b2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQxLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAot
Lm9wR2V0QnlJZEFycmF5TGVuZ3RoOgotICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1v
ZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKLSAgICBtb3ZlIHQzLCB0MAotICAgIGFy
cmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElz
QXJyYXksIHNsb3dMYWJlbAotICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFi
ZWwKLSAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAotICAgIGxvYWRpIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xl
bmd0aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCi0gICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIEludDMyVGFnLCB0MCkKLSAgICBy
ZXR1cm4oSW50MzJUYWcsIHQwKQorIyBJdCBjYW4ndCBiZSBhcnJheSBsZW5ndGggc2luY2Ugd2Ug
ZG9uJ3QgdXNlIHRoaXMgZm9yIGFyYml0cmFyeSBnZXRfYnlfaWQncyB0aGF0IGNvdWxkCisjIGFj
Y2VzcyAibGVuZ3RoIi4gV2Ugb25seSB1c2UgaXQgZm9yIGl0ZXJhdG9yIG9wY29kZXMgd2hpY2gg
YXJlbid0IHVzaW5nICJsZW5ndGgiIGFzIGFuCisjIGlkZW50aWZpZXIuCiAgICAgCiAub3BHZXRC
eUlkVW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBs
b2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1v
ZGUuc3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5l
ZFRhZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCB0MiwgVW5kZWZpbmVkVGFnLCAwLCB0MykKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQog
CiBlbmQKQEAgLTE1MDYsMjAgKzE0OTksMjAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWQsIE9wR2V0QgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAu
b3BHZXRCeUlkU2xvdwogICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFk
YXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0NV0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlk
LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9w
cm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlk
QXJyYXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlM
ZW5ndGgsIC5vcEdldEJ5SWRVbnNldAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbW92ZSB0MywgdDIK
LSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJy
YXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCkKKyAgICBhcnJheVByb2ZpbGUo
T3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQxKQogICAg
IGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdT
aGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5
W3QzXSwgdDAKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIC5vcEdl
dEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgSW50
MzJUYWcsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIElu
dDMyVGFnLCB0MCwgdDMpCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIAogLm9wR2V0QnlJZFVu
c2V0OgpAQCAtMTUyNyw3ICsxNTIwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
aWQsIE9wR2V0QgogICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcsIDApCisgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwLCB0
MykKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRCeUlkRGVmYXVsdDoKQEAg
LTE1MzYsNyArMTUyOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdl
dEIKICAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVs
dE1vZGUuY2FjaGVkT2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zm
c2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmls
ZSwgdDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1
LCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRTbG93OgpAQCAt
MTU0Niw3ICsxNTM5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QgogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChv
cF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQzKQogICAgIHJldHVybihyMSwgcjApCiAK
IGVuZCkKQEAgLTE2MjQsNyArMTYxNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X3ZhbCwgT3BHZXQKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1
bHRQYXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2Fk
KQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJU
YWcsIHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQK
IApAQCAtMTYzMyw3ICsxNjI2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFs
LCBPcEdldAogICAgICAgICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAg
ICBzdG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBz
dG9yZWkgc2NyYXRjaDIsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNo
MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0
Y2gzLCBzY3JhdGNoMiwgc2NyYXRjaDEpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApA
QCAtMTY0MSw3ICsxNjM0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldAogICAgIGdldChtX2Jhc2UsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQogICAgIG1vdmUgdDAs
IHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZSwgdDIsIHQ1LCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxLCB0MykKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwg
Lm9wR2V0QnlWYWxTbG93KQogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQz
CkBAIC0xNjc4LDcgKzE2NzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0CiAub3BHZXRCeVZhbE5vdEVtcHR5OgogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKKyAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxLCB0MykKICAgICBkaXNw
YXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNjkxLDcgKzE2ODQs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAub3NyUmV0dXJu
UG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWws
IHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1f
cHJvZmlsZSwgdDIsIHIxLCByMCwgdDMpCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAt
MTcxMiw3ICsxNzA1LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1l
LAogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRQcml2YXRl
TmFtZVNsb3cKIAogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwg
dDEpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQw
LCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0NSwg
dDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRQcml2YXRlTmFtZVNsb3c6
CkBAIC0xNzc0LDcgKzE3NjcsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjCiAKICAgICAgICAgLm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlhZXEgdDMsIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxl
bmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0b3JlYiAxLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVb
dDVdCisgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlW3Q1XSwgdDIKKyAgICAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5
U3RvcmVUb0hvbGVbdDJdCiAgICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgogICAgICAgICAgICAg
c3RvcmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVu
Z3Rocy5wdWJsaWNMZW5ndGhbdDBdCiAgICAgICAgICAgICBqbXAgLnN0b3JlUmVzdWx0CkBAIC0x
Nzg1LDcgKzE3NzksNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
CiAgICAgICAgIGdldChtX2Jhc2UsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAgICAgICAg
bW92ZSB0MSwgdDIKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5UHJvZmlsZSglb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MykKICAg
ICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZChzaXplLCB0MCwgSW50MzJUYWcsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAg
IGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwCkBAIC0xODM5LDcgKzE4MzMsOCBA
QCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGRpc3Bh
dGNoKCkKIAogICAgIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHk6Ci0gICAgICAgIHN0b3Jl
YiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVU
b0hvbGVbdDVdCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGVbdDVdLCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0
b3JlVG9Ib2xlW3QxXQogICAgICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJ
blZlY3Rvclt0MF0KICAgICAgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5k
ZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQdXRCeVZhbEFycmF5
U3RvcmFnZVN0b3JlUmVzdWx0CiAgICAgICAgIGFkZGkgMSwgdDMsIHQxCkBAIC0xODQ3LDcgKzE4
NDIsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAg
IGptcCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAKICAgICAub3BQdXRCeVZh
bE91dE9mQm91bmRzOgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2FycmF5UHJvZmlsZS5tX291dE9mQm91bmRzW3Q1XQorICAgICAgICBsb2FkcCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAgc3RvcmVi
IDEsIEFycmF5UHJvZmlsZTo6bV9vdXRPZkJvdW5kc1t0MV0KICAgICAub3BQdXRCeVZhbFNsb3c6
CiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAg
ICAgICAgZGlzcGF0Y2goKQpAQCAtMjUxNSw3ICsyNTExLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAg
bG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAg
ICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKKyAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQz
KQogICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTI0LDcgKzI1MjAsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRw
IFRhZ09mZnNldFt0MF0sIHQxCiAgICAgICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdDBdLCB0Mgog
ICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQxKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQzKQogICAgICAgICByZXR1
cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTMyLDcgKzI1MjgsNyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3Bl
OjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52
aXJvbm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0MywgOF0sIHQxCiAgICAgICAgIGxv
YWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAsIHQz
LCA4XSwgdDIKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUs
IHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9m
aWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02OCwx
NSArNjgsMTYgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZwogICAg
IGZuKG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRh
dGEodDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUs
IHQxLCB0MykKKyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0
MSwgdDMsIHQyKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMsIFtj
ZnIsIHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCi0g
ICAgc3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUu
bV9idWNrZXRzW21ldGFkYXRhXQorbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJv
ZmlsZU5hbWUsIG1ldGFkYXRhLCB2YWx1ZSwgc2NyYXRjaCkKKyAgICBsb2FkcCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSVbbWV0YWRhdGFdLCBzY3JhdGNoCisgICAgc3Rv
cmVxIHZhbHVlLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0c1tzY3JhdGNoXQogZW5kCiAKICMgQWZ0
ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMg
YXJlIG5vdCB1c2VkLgpAQCAtODcsNyArODgsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChz
aXplLCBvcGNvZGVTdHJ1CiAgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJl
Z2lzdGVyLCB0MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNp
emUsIG9wY29kZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjAsIHQzKQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBA
IC0xNTA5LDcgKzE1MTAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJl
Y3QsCiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9w
R2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZERpcmVjdCwgbV9wcm9maWxlLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERp
cmVjdCwgbV9wcm9maWxlLCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJ
ZERpcmVjdFNsb3c6CkBAIC0xNTE4LDcgKzE1MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZF9kaXJlY3QsCiBlbmQpCiAKICMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVk
IGluIHQzCi1tYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRh
ZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJl
dHVybikKK21hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFk
YXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0
dXJuLCBkb0FycmF5UHJvZmlsZSkKICAgICBtZXRhZGF0YSh0MiwgdDEpCiAgICAgbG9hZGIgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAK
QEAgLTE1MjksNyArMTUzMCw3IEBAIG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0
cnVjdCwKICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAogICAgIGxvYWRpcyAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZz
ZXRbdDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkK
LSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAp
CisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQw
LCB0MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CkBAIC0xNTQwLDI3
ICsxNTQxLDI3IEBAIG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwKICAg
ICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJv
dG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0
Ml0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAg
IHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKKyAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQx
KQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQx
LCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAg
ICBtb3ZlIHQzLCB0MAotICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVtb2RlTWV0YWRhdGFOYW1lJS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIs
IHQ1KQorICAgIGRvQXJyYXlQcm9maWxlKHQwLCB0MiwgdDUsIHQxKQogICAgIGJ0aXogdDAsIElz
QXJyYXksIHNsb3dMYWJlbAogICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFi
ZWwKICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwLCB0
MSkKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUu
bGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAog
ICAgIG9ycSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlk
VW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2Fk
aSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUu
c3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZp
bmVkKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCBWYWx1ZVVuZGVmaW5lZCwgdDEpCiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQogCiBlbmQK
QEAgLTE1NjgsNyArMTU2OSwxMCBAQCBlbmQKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQogICAgIGdldChtX2Jhc2UsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxs
KHNpemUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCi0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIo
T3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQs
IG1fbW9kZU1ldGFkYXRhLCBtX3Byb2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0
YSwgcmV0dXJuLAorICAgICAgICBtYWNybyAoY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEs
IHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEs
IHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgZW5kKQogCiAub3BHZXRCeUlkU2xvdzoKICAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCkBAIC0xNTc3LDcgKzE1
ODEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAub3NyUmV0
dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9p
ZCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJ
ZCwgbV9wcm9maWxlLCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9m
aWxlLCB0MiwgcjAsIHQzKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTY5OCw3ICsxNzAy
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogICAgIG1hY3Jv
IGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3Jh
dGNoKQogICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQorICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0LCBzY3JhdGNoKQog
ICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE3MTksNyArMTcyMyw3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAogICAgIG1vdmUgdDAs
IHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZSwgdDIsIHQ1LCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxLCB0MykKIAogICAgIGdldChtX3Byb3BlcnR5LCB0MykK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZh
bFNsb3cpCkBAIC0xNzU5LDcgKzE3NjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV92YWwsIE9wR2V0CiAKIC5vcEdldEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQw
LCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgIGRp
c3BhdGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE3NzIsNyArMTc3
Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIC5vc3JSZXR1
cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3Zh
bCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlW
YWwsIG1fcHJvZmlsZSwgdDUsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3By
b2ZpbGUsIHQ1LCByMCwgdDMpCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNzk0LDcgKzE3
OTgsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUsCiAKICAgICBs
b2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDIsIHQwLCB0MykKICAgICByZXR1cm4odDApCiAK
IC5vcEdldFByaXZhdGVOYW1lU2xvdzoKQEAgLTE4OTcsNyArMTkwMSw4IEBAIG1hY3JvIHB1dEJ5
VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKIAogICAgICAgICAub3V0T2ZCb3VuZHM6CiAg
ICAgICAgICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRPZkJvdW5kcwot
ICAgICAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVBy
b2ZpbGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0MgorICAgICAgICAgICAgc3RvcmVi
IDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0Ml0KICAgICAgICAgICAgIGFkZGkg
MSwgdDMsIHQyCiAgICAgICAgICAgICBzdG9yZWkgdDIsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0KICAgICAgICAgICAg
IGptcCAuc3RvcmVSZXN1bHQKQEAgLTE5MDcsNyArMTkxMiw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNl
bGwoc2l6ZSwgdDAsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5
UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUs
IHQwLCB0MykKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAg
IHN4aTJxIHQzLCB0MwpAQCAtMTk2Miw3ICsxOTY3LDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZh
bEFycmF5U3RvcmFnZUVtcHR5OgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAg
ICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0KICAgICAgICAg
YWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJp
YiB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAg
ICAgICBhZGRpIDEsIHQzLCB0MQpAQCAtMTk3MCw3ICsxOTc2LDggQEAgbWFjcm8gcHV0QnlWYWxP
cChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0
b3JhZ2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoKLSAgICAgICAg
c3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRP
ZkJvdW5kc1t0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Fy
cmF5UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0
T2ZCb3VuZHNbdDFdCiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKQEAgLTI2
NjIsNyArMjY2OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8K
ICAgICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldCh0MSwgdDAsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUs
IG1fcHJvZmlsZSwgdDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUs
IG1fcHJvZmlsZSwgdDUsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQyKQogICAgIGVuZAogCkBA
IC0yNjcwLDE0ICsyNjc3LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2Nv
cGUsIE8KICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRb
dDVdLCB0MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAogICAgICAgICB0ZHpDaGVja0lmTmVjZXNz
YXJ5KHQwKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwg
dDUsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwg
dDUsIHQwLCB0MykKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0
Q2xvc3VyZVZhcigpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9v
cGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFi
bGVzW3QwLCB0MSwgOF0sIHQwCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
bV9wcm9maWxlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwg
bV9wcm9maWxlLCB0NSwgdDAsIHQzKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAg
LTMwMDIsNyArMzAwOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3Blbiwg
T3AKIAogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQzKQogICAgIGJ0cW56IHQz
LCBub3RDZWxsTWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdwotICAgIHBlcmZv
cm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJv
ZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0
b3JlTmV4dEFuZERpc3BhdGNoKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JP
cGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNH
ZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoLCBtYWNybyhh
LCBiLCBjLCBkKSBlbmQpCiAKIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKQEAg
LTMwNjEsNyArMzA2OCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwg
T3AKIAogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQogICAgIGJ0cW56IHQzLCBu
b3RDZWxsTWFzaywgLmdldERvbmVTbG93Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVy
YXRvck5leHQsIG1fZG9uZU1vZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93
LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSkKKyAgICBwZXJmb3Jt
R2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQ
cm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dl
dFZhbHVlLCBtYWNybyhhLCBiLCBjLCBkKSBlbmQpCiAKIC5nZXREb25lU2xvdzoKICAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQpAQCAtMzA4
Niw3ICszMDkzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcAog
ICAgICMgUmVsb2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92
ZSBtYXkgaGF2ZSBjbG9iYmVyZWQgdDMuCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwg
dDMpCiAgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQg
aXMgYSBjZWxsIGhlcmUgc2luY2Ugd2Ugd2lsbCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUu
Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0
YWRhdGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3Rv
cmVWYWx1ZUFuZERpc3BhdGNoKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JO
ZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZhbHVlU2xvdywg
c2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkg
ZW5kKQogCiAuZ2V0VmFsdWVTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2l0ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQpAQCAtMzE1OSw3ICszMTY2LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9lbnVtZXJhdG9yX2dldF9ieQogICAgIGxvYWRxIGNvbnN0ZXhwciAoKG9m
ZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSkgKiBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKVt0MCwgdDIsIDhdLCB0MgogCiAuZG9uZToKLSAgICB2YWx1ZVByb2ZpbGUoT3BFbnVt
ZXJhdG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEVu
dW1lcmF0b3JHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgIHJldHVybih0MikK
IAogLmdldFNsb3dQYXRoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjg0LDExICsxMjg0LDEyIEBAIG1hY3JvIGdldHRlclNldHRlck9TUkV4aXRSZXR1
cm5Qb2ludChvcE4KICAgICBsb2FkaSBMTEludFJldHVyblBDW2Nmcl0sIFBDCiBlbmQKIAotbWFj
cm8gYXJyYXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNj
cmF0Y2gpCittYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBt
ZXRhZGF0YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGNvbnN0IGNlbGwgPSBjZWxsQW5kSW5k
ZXhpbmdUeXBlCiAgICAgY29uc3QgaW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZSAK
LSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHNjcmF0Y2gKLSAgICBzdG9y
ZWkgc2NyYXRjaCwgb2Zmc2V0ICsgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURb
bWV0YWRhdGFdCisgICAgbG9hZHAgb2Zmc2V0W21ldGFkYXRhXSwgc2NyYXRjaDIKKyAgICBsb2Fk
aSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHNjcmF0Y2gxCisgICAgc3RvcmVpIHNjcmF0
Y2gxLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFtzY3JhdGNoMl0KICAgICBs
b2FkYiBKU0NlbGw6Om1faW5kZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBl
bmQKIApAQCAtMTYxMiw4ICsxNjEzLDggQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihw
cm9maWxlQXJnUwogICAgIGFkZHAgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1
c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQogICAgIGFzc2VydChtYWNybyAob2spIGJw
Z3RlcSB0MCwgMCwgb2sgZW5kKQogICAgIGJ0cHogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCi0g
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIEZpeGVkVmVjdG9y
OjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0MV0sIHQzCi0gICAgYnRweiB0
MywgLmFyZ3VtZW50UHJvZmlsZURvbmUgIyBXaGVuIHdlIGNhbid0IEpJVCwgd2UgZG9uJ3QgYWxs
b2NhdGUgYW55IGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVzLgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV91bmxpbmtlZENvZGVbdDFdLCB0MworICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3Zh
bHVlUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5Ojpt
X2RhdGFbdDNdLCB0MwogICAgIG11bHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFh
YWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKICAgICBsc2hpZnRwIDMsIHQwICMgb2Zm
c2V0IG9mIGxhc3QgSlNWYWx1ZSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLgogICAgIGFkZHAgdDIs
IHQzICMgcG9pbnRlciB0byBlbmQgb2YgVmFsdWVQcm9maWxlIGFycmF5IGluIENvZGVCbG9jazo6
bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkocmV2
aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDcgQEAgQnl0
ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZShDb2RlQgogICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5u
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIENTdHJpbmcgZGVz
Y3JpcHRpb24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGkpLmJyaWVmRGVz
Y3JpcHRpb24obG9ja2VyKTsKKyAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9j
ay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbigpOwogICAgICAg
ICBpZiAoIWRlc2NyaXB0aW9uLmxlbmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIG91dC5yZXNldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE2LDYgKzE5
MTYsOSBAQCBwdWJsaWM6CiAKICAgICBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGEqIHJhcmVE
YXRhKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEuZGVjb2RlKGRl
Y29kZXIpOyB9CiAKKyAgICB1bnNpZ25lZCBudW1WYWx1ZVByb2ZpbGVzKCkgY29uc3QgeyByZXR1
cm4gbV9udW1WYWx1ZVByb2ZpbGVzOyB9CisgICAgdW5zaWduZWQgbnVtQXJyYXlQcm9maWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtQXJyYXlQcm9maWxlczsgfQorCiBwcml2YXRlOgogICAgIFZp
cnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29w
ZVJlZ2lzdGVyOwpAQCAtMTk0Nyw2ICsxOTUwLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1D
YWxsZWVMb2NhbHM7CiAgICAgaW50IG1fbnVtUGFyYW1ldGVyczsKIAorICAgIHVuc2lnbmVkIG1f
bnVtVmFsdWVQcm9maWxlczsKKyAgICB1bnNpZ25lZCBtX251bUFycmF5UHJvZmlsZXM7CisKICAg
ICBDYWNoZWRNZXRhZGF0YVRhYmxlIG1fbWV0YWRhdGE7CiAKICAgICBDYWNoZWRQdHI8Q2FjaGVk
Q29kZUJsb2NrUmFyZURhdGE+IG1fcmFyZURhdGE7CkBAIC0yMTUyLDYgKzIxNTgsOCBAQCBBTFdB
WVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlCiAgICAgLCBtX21ldGFkYXRhKGNh
Y2hlZENvZGVCbG9jay5tZXRhZGF0YShkZWNvZGVyKSkKICAgICAsIG1faW5zdHJ1Y3Rpb25zKGNh
Y2hlZENvZGVCbG9jay5pbnN0cnVjdGlvbnMoZGVjb2RlcikpCiAKKyAgICAsIG1fdmFsdWVQcm9m
aWxlcyhjYWNoZWRDb2RlQmxvY2subnVtVmFsdWVQcm9maWxlcygpKQorICAgICwgbV9hcnJheVBy
b2ZpbGVzKGNhY2hlZENvZGVCbG9jay5udW1BcnJheVByb2ZpbGVzKCkpCiAgICAgLCBtX3JhcmVE
YXRhKGNhY2hlZENvZGVCbG9jay5yYXJlRGF0YShkZWNvZGVyKSkKIHsKIH0KQEAgLTIzMjIsNiAr
MjMzMCw4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxvY2s8Q29kZUIKICAgICBt
X251bVZhcnMgPSBjb2RlQmxvY2subV9udW1WYXJzOwogICAgIG1fbnVtQ2FsbGVlTG9jYWxzID0g
Y29kZUJsb2NrLm1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIG1fbnVtUGFyYW1ldGVycyA9IGNvZGVC
bG9jay5tX251bVBhcmFtZXRlcnM7CisgICAgbV9udW1WYWx1ZVByb2ZpbGVzID0gY29kZUJsb2Nr
Lm1fdmFsdWVQcm9maWxlcy5zaXplKCk7CisgICAgbV9udW1BcnJheVByb2ZpbGVzID0gY29kZUJs
b2NrLm1fYXJyYXlQcm9maWxlcy5zaXplKCk7CiAgICAgbV9mZWF0dXJlcyA9IGNvZGVCbG9jay5t
X2ZlYXR1cmVzOwogICAgIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBjb2RlQmxvY2subV9sZXhp
Y2FsU2NvcGVGZWF0dXJlczsKICAgICBtX3BhcnNlTW9kZSA9IGNvZGVCbG9jay5tX3BhcnNlTW9k
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9m
aWxlKQogCiAjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7
IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1
Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jaykucHJvZmlsZU5hbWUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dB
cml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRocm93U2NvcGUmIHNjb3BlKQpAQCAtODg3LDcgKzg4Nyw3IEBAIEFMV0FZU19JTkxJTkUgU2xv
d1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG8KICAgICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5dGVj
b2RlLm1faXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKICAgICBpZiAoYXV0byBhcnJheUl0
ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3IpKSB7
CiAgICAgICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0sIGl0
ZXJhYmxlKSkgewotICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2JzZXJ2
ZVN0cnVjdHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRh
Lm1faXRlcmFibGVQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlE
KCkpOwogCiAgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2Rl
cyA9IG1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9k
ZTo6RmFzdEFycmF5OwogICAgICAgICAgICAgYXV0byYgaW5kZXhTbG90ID0gYXJyYXlJdGVyYXRv
ci0+aW50ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCk7CkBAIC05NTEs
NyArOTUxLDkgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90bwogSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnRlcikKIHsKICAgICBCRUdJTigp
OwotICAgIEhlYXA6OmhlYXAoY29kZUJsb2NrKS0+d3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7Cisg
ICAgSGVhcCYgaGVhcCA9ICpIZWFwOjpoZWFwKGNvZGVCbG9jayk7CisgICAgaGVhcC53cml0ZUJh
cnJpZXIoY29kZUJsb2NrKTsKKyAgICBoZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCkpOwogICAgIEVORCgpOwogfQogCkBAIC05OTMsNyArOTk1LDcgQEAgSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAgIEFTU0VSVCghYmFzZVZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVl
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2UtPnN0cnVjdHVyZUlE
KCkpOworICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFz
ZS0+c3RydWN0dXJlSUQoKSk7CiAKICAgICBKU1N0cmluZyogbmFtZSA9IGVudW1lcmF0b3ItPmNv
bXB1dGVOZXh0KGdsb2JhbE9iamVjdCwgYmFzZSwgaW5kZXgsIG1vZGUpOwogICAgIENIRUNLX0VY
Q0VQVElPTigpOwpAQCAtMTAxOSw3ICsxMDIxLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19Q
QVRIKHNsb3dfcGF0aF9lbgogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZTogewogICAgICAgICBpZiAoTElLRUxZKGJhc2VW
YWx1ZS5pc0NlbGwoKSkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNl
cnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJh
c2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKSk7
CiAgICAgfQogICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1Y3R1cmVN
b2RlOiB7CkBAIC0xMDM0LDcgKzEwMzYsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgo
c2xvd19wYXRoX2VuCiAKICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJp
Y01vZGU6IHsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBtb2RlICE9IEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZSkKLSAgICAgICAgICAgIG1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCkt
PnN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUtPm9i
c2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwogICAg
ICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5dGVjb2RlLm1fcHJvcGVydHlO
YW1lKS5qc1ZhbHVlKCkpOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9J
ZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwpAQCAt
MTA2OCw3ICsxMDcwLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9l
bgogICAgIH0KIAogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhHRVQoYnl0ZWNvZGUu
bV9wcm9wZXJ0eU5hbWUpLmpzVmFsdWUoKSk7Ci0gICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25T
bG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3RyaW5nLCAmbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3RyaW5nLCBtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZSkpKTsKIH0KIAogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDcgKzU0LDYgQEAgREVGSU5FX1ZJU0lUX0NISUxEUkVOKEpTU2NvcGUpOwogc3RhdGljIGlubGlu
ZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2Nv
cGUqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0T3JQdXQgZ2V0T3JQdXQsIHNp
emVfdCBkZXB0aCwgYm9vbCYgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIFJlc29sdmVPcCYgb3As
IEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKHNjb3BlLT5pc0pTTGV4aWNhbEVudmlyb25tZW50KCkpIHsK
ICAgICAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9IGpzQ2Fz
dDxKU0xleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKQEAgLTgwLDggKzc5LDkgQEAgc3RhdGlj
IGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYgogICAgICAgICBpZiAoc2NvcGUtPnR5
cGUoKSA9PSBNb2R1bGVFbnZpcm9ubWVudFR5cGUpIHsKICAgICAgICAgICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PihzY29wZSk7CiAgICAgICAgICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
ID0gbW9kdWxlRW52aXJvbm1lbnQtPm1vZHVsZVJlY29yZCgpOworICAgICAgICAgICAgYXV0byBj
YXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBBYnN0cmFj
dE1vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNv
bHZlSW1wb3J0KGdsb2JhbE9iamVjdCwgaWRlbnQpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgICAgICAgICBjYXRjaFNjb3BlLnJlbGVh
c2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9
PSBBYnN0cmFjdE1vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKICAg
ICAgICAgICAgICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNv
bHV0aW9uLm1vZHVsZVJlY29yZDsKICAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50
KiBpbXBvcnRlZEVudmlyb25tZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50
KCk7CkBAIC0zMDQsOSArMzA0LDYgQEAgSlNPYmplY3QqIEpTU2NvcGU6OnJlc29sdmUoSlNHbG9i
YWxPYmplYwogCiBSZXNvbHZlT3AgSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBkZXB0aE9mZnNldCwgSlNTY29wZSogc2NvcGUsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRPclB1dCBnZXRPclB1dCwgUmVzb2x2ZVR5cGUgdW5s
aW5rZWRUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQogewotICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLQogICAgIFJlc29sdmVPcCBvcChEeW5hbWljLCAwLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsKICAgICBpZiAodW5saW5rZWRUeXBlID09IER5bmFt
aWMpCiAgICAgICAgIHJldHVybiBvcDsKQEAgLTMxNSw3ICszMTIsNiBAQCBSZXNvbHZlT3AgSlNT
Y29wZTo6YWJzdHJhY3RSZXNvbHZlKEpTR2xvCiAgICAgc2l6ZV90IGRlcHRoID0gZGVwdGhPZmZz
ZXQ7CiAgICAgZm9yICg7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5uZXh0KCkpIHsKICAgICAgICAg
Ym9vbCBzdWNjZXNzID0gYWJzdHJhY3RBY2Nlc3MoZ2xvYmFsT2JqZWN0LCBzY29wZSwgaWRlbnQs
IGdldE9yUHV0LCBkZXB0aCwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIG9wLCBpbml0aWFsaXph
dGlvbk1vZGUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIFJlc29s
dmVPcChEeW5hbWljLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKSk7CiAgICAgICAg
IGlmIChzdWNjZXNzKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICsrZGVwdGg7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OTYsMTAgKzE1OTYsNiBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJy
YXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OENsYW1wZWRBcnJheSkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQxNkFycmF5KQogRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVWludDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFVubGlua2VkRXZhbENvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwgd2Vha01h
cEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrTWFwKSAvLyBIYXNoOjB4NjYyYjEyYTMKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgpA
QCAtMTY1Myw2ICsxNjQ5LDExIEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVygKIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1
dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRXZhbEV4ZWN1
dGFibGUpIC8vIEhhc2g6MHg5NThlM2U5ZAogRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1
MDZmYTNjCiAKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5r
ZWRFdmFsQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFVubGlua2VkRXZhbENvZGVCbG9jaykKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVN
QkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQorRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKQorCiAjdW5kZWYgRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVwogCiBKU0NlbGwqIFZNOjpzZW50
aW5lbFNldEJ1Y2tldFNsb3coKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShy
ZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MDMsMTAgKzYwMyw2IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MTZBcnJheVNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDMyQXJyYXlTcGFjZSkKLSAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRXZhbENvZGVCbG9ja1Nw
YWNlKQotICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9ja1NwYWNlKQotICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCi0gICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFsaXphdGlvblJlZ2lzdHJ5
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrT2JqZWN0
UmVmU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWFrU2V0
U3BhY2UpCkBAIC02NzgsMTkgKzY3NCwyNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgU3BhY2VBbmRT
ZXQgY29kZUJsb2NrU3BhY2U7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZv
aWQgZm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAg
ICAvLyBUaGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJl
Y2F1c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgotICAgICAgICAvLyBKU0M6OkNvZGVC
bG9jay4KLSAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7Ci0gICAgfQotCiAgICAgRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKICAgICBE
WU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlKQogICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwogICAgIFNw
YWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CiAKKyAgICBEWU5BTUlDX1NQQUNFX0FO
RF9TRVRfREVGSU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUih1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
U3BhY2UpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIodW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RF
RklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFVubGlua2VkQ29kZUJsb2NrU3BhY2Uo
Y29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGZ1bmMobV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2tTcGFjZS5nZXQoKSk7CisgICAgICAgIGZ1bmMobV91bmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrU3BhY2UuZ2V0KCkpOworICAgICAgICBmdW5jKG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrU3BhY2UuZ2V0KCkpOworICAgICAgICBmdW5jKG1fdW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrU3BhY2UuZ2V0KCkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAg
ICAgdm9pZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCiAg
ICAgewo=
</data>
<flag name="review"
          id="461383"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438270</attachid>
            <date>2021-09-15 11:54:51 -0700</date>
            <delta_ts>2021-09-15 12:21:26 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>158193</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMzY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5NSBA
QAorMjAyMS0wOS0xNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgyOTQ3NTcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBWYWx1ZVByb2ZpbGVzIGFuZCBBcnJheVByb2Zp
bGVzIGZvciBub24tY2FsbCBvcGNvZGVzIGludG8KKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2su
IFRoaXMgd2F5LCB0aGUgZGF0YSBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgbGlua2VkIENvZGVCbG9j
a3MKKyAgICAgICAgb2YgdGhlIHNhbWUgVW5saW5rZWRDb2RlQmxvY2suIFRoZSBwcm9maWxpbmcg
YmV0IGhlcmUgaXMgdGhhdCB3aGVuIHRoZSBzYW1lIGNvZGUKKyAgICAgICAgcnVucyBpbiBhIGRp
ZmZlcmVudCBnbG9iYWwgb2JqZWN0LCBpdCBsYXJnZWx5IHJ1bnMgaW4gdGhlIHNhbWUgd2F5LiBX
ZSd2ZSBtYWRlCisgICAgICAgIHRoaXMgc2FtZSBiZXQgaW4gb3RoZXIgd2F5cyB3aXRoIG91ciBw
cm9maWxpbmcsIGFuZCBpdCBsYXJnZWx5IG1ha2VzIHNlbnNlCisgICAgICAgIHRvIGRvIGZvciBW
YWx1ZVByb2ZpbGUgYW5kIEFycmF5UHJvZmlsZSBzaW5jZSB0aGV5IGJvdGggaG9sZCBnbG9iYWwg
b2JqZWN0CisgICAgICAgIGluZGVwZW5kZW50IGRhdGEuCisgICAgICAgIAorICAgICAgICBCZWNh
dXNlIEFycmF5UHJvZmlsZXMgYXJlIG5vdyBzaGFyZWQgYmV0d2VlbiBDb2RlQmxvY2tzLCB0aGUg
ZXhpc3RpbmcgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMKKyAgICAgICAgYml0IGlzIHNs
aWdodGx5IGhhcmRlciB0byB0cmFjayBub3csIHNpbmNlIHRoZSBBcnJheVByb2ZpbGUgbWF5IHNl
ZSBpbnB1dHMgZnJvbSBhIGRpZmZlcmVudAorICAgICAgICBnbG9iYWwgb2JqZWN0LCBhbiBhcnJh
eSBtYXkgYmUgYW4gb3JpZ2luYWwgYXJyYXkgaW4gb25lIGxleGljYWwgZ2xvYmFsIG9iamVjdCwK
KyAgICAgICAgYnV0IG5vdCBhbm90aGVyLiBTbyB3ZSBub3cgdHJhY2sgd2hlbiBhbiBBcnJheVBy
b2ZpbGUgc2VlcyBhIGRpZmZlcmVudCBnbG9iYWwKKyAgICAgICAgb2JqZWN0IHRoYW4gdGhlIGxl
eGljYWwgZ2xvYmFsIG9iamVjdCwgYW5kIHdoZW4gd2Ugb2JzZXJ2ZSBleGl0cyBpbiB0aGUgREZH
LAorICAgICAgICB3ZSBwcm9wYWdhdGUgdGhhdCBiaXQgdG8gdGhlIG1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzIGJpdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtl
cyBpdCBzbyB3ZSBubyBsb25nZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAg
ICBwcm9jZXNzaW5nIFZhbHVlUHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxv
dyBtdWx0aXBsZSBjb21waWxlcgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNo
IG90aGVyIHdoZW4gdXBkYXRpbmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAg
ICAgSXQgbWF5IGVuZCB1cCB3aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1
dCBpdCB3b24ndCBjb3JydXB0IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFs
c28gbWFrZXMgaXQgc28gd2UgZmluYWxpemVkIHZpc2l0ZWQgVW5saW5rZWRDb2RlQmxvY2tzIHRv
IGZpbmFsaXplCisgICAgICAgIHRoZWlyIHZhbHVlIHByb2ZpbGVzLiBXZSBubyBsb25nZXIgZG8g
dGhhdCB3b3JrIGluc2lkZSBDb2RlQmxvY2sgZm9yIHRoZQorICAgICAgICBWYWx1ZVByb2ZpbGVz
IHRoYXQgVW5saW5rZWRDb2RlQmxvY2sgb3ducy4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgd2UgaGF2
ZSB0bworICAgICAgICBXcml0ZUJhcnJpZXIgVW5saW5rZWRDb2RlQmxvY2sgd2hlbiBleGVjdXRp
bmcgaW4gdGhlIExMSW50LCBCYXNlbGluZSwgYW5kCisgICAgICAgIG90aGVyIGFyZWFzLCBzdWNo
IGFzIE9TUiBleGl0LCBhbmQgaW4gdGhlIEdDIHdoZW4gYSBDb2RlQmxvY2sgd2FzIGV4ZWN1dGlu
Zy4KKyAgICAgICAgVGhhdCB3YXkgd2UncmUgZ3VhcmFudGVlZCB0byB2aXNpdCB0aGUgVW5saW5r
ZWRDb2RlQmxvY2ssIGFkZCBpdCB0byB0aGUKKyAgICAgICAgdmlzaXRlZCBzZXQsIGFuZCB0aGVu
IGZpbmFsaXplIGl0IGF0IHRoZSBlbmQgb2YgR0MuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGFsc28gbWFrZXMgaXQgc28gdGhhdCBpbnNpZGUgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
biwgd2UgZmluaXNoCisgICAgICAgIGxpbmtpbmcgYmVmb3JlIHdlIGRvIGFueXRoaW5nIHRoYXQg
Y2FuIHRocm93IGFuIGV4Y2VwdGlvbi4gSXQncyBub3QgdmFsaWQgdG8KKyAgICAgICAgZmluYWxp
emUgYSBDb2RlQmxvY2sgdGhhdCBpc24ndCBsaW5rZWQuCisgICAgICAgIAorICAgICAgICBUaGlz
IHdhcyBtZWFzdXJlZCBhcyBhIDAuNS0xJSBzcGVlZHVwIG9uIFNwZWVkb21ldGVyMi4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpicmllZkRlc2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpicmll
ZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVBy
b2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVkQXJyYXlNb2RlcyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjptYXlTdG9yZVRvSG9sZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b3V0T2ZCb3VuZHMgY29uc3QpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6c2V0RG9lc05vdFVzZU9yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlZERpZmZlcmVudEds
b2JhbE9iamVjdCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50Lmg6CisgICAg
ICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjppbml0aWFsaXplVGVtcGxhdGVPYmplY3RzKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpzZXROdW1QYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0Fu
ZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5
UHJlZGljdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmls
ZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvZmZzZXRPZlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpm
b3JFYWNoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhpdFByb2ZpbGU6Omhhc0FueUV4aXRzQXQgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZE1ldGFkYXRhLmg6CisgICAgICAgIChKU0M6OkdldEJ5SWRNb2RlTWV0YWRhdGE6
OnNldEFycmF5TGVuZ3RoTW9kZSk6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMpOgorICAgICAgICAoSlNDOjpM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJlZGljdGlvbiBjb25zdCk6CisgICAgICAg
ICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbklt
cGwpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWxsb2NhdGVTaGFyZWRQcm9m
aWxlcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omhhc0FueUV4aXRzQXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFzQW55RXhpdHNBdCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6YXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6Om51bVZhbHVlUHJvZmlsZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6bnVtQXJyYXlQcm9maWxlcyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTWV0YWRh
dGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmlzRmluYWxp
emVkKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpoYXNNZXRhZGF0YSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNl
OjpWYWx1ZVByb2ZpbGVCYXNlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6Y2xl
YXJCdWNrZXRzKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6YnJpZWZEZXNjcmlw
dGlvbik6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbik6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tl
dCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNsYXNzSW5mbyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhTcGVjdWxhdGlvbkZyb21Qcm9m
aWxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OndpdGhQcm9maWxlIGNv
bnN0KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRBcnJheU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdG
aXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphdHRlbXB0VG9N
YWtlR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9z
cldyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICog
aGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6
aXRlcmF0ZVZpYVN1YnNwYWNlcyk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAg
KEpTQzo6SGVhcDo6ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVycyk6CisgICAg
ICAgIChKU0M6OkhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSk6CisgICAgICAgIChKU0M6
OkhlYXA6OnJ1bkVuZFBoYXNlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkQ29yZUNvbnN0cmFp
bnRzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29k
ZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZW50ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0
b3IpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0
QnlWYWxPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OmRpcmVjdFB1dEJ5VmFsT3B0aW1pemUpOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfZnJvbV9zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9pbl9ieV92YWwpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OnBlcmZvcm1MTEludEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpM
TEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlW
YWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVj
b2RlU2VxdWVuY2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVTZXF1ZW5j
ZTo6Qnl0ZWNvZGVTZXF1ZW5jZSk6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6bnVtVmFsdWVQcm9maWxlcyBjb25zdCk6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6bnVtQXJyYXlQcm9maWxlcyBjb25zdCk6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJh
dG9yTmV4dFRyeUZhc3RJbXBsKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DT01NT05fU0xP
V19QQVRIKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjph
YnN0cmFjdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZSk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAoSlNDOjpWTTo6Zm9yRWFjaFVubGlua2VkQ29kZUJsb2NrU3BhY2UpOgorICAgICAgICAo
SlNDOjpWTTo6Zm9yRWFjaENvZGVCbG9ja1NwYWNlKTogRGVsZXRlZC4KKwogMjAyMS0wOS0xMyAg
WGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdWzMyYml0XSBpbi1i
eS12YWwgZmFpbHMgaW5zaWRlIGZvci1pbiBsb29wIGFmdGVyIGRlbGV0ZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9u
IDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTggKzExOCw0MSBAQCB2b2lkIGR1bXBBcnJheU1v
ZGVzKFByaW50U3RyZWFtJiBvdXQsIEFyCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkJpZ1Vp
bnQ2NEFycmF5TW9kZSIpOwogfQogCi12b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlSUQpCisg
ICAgLy8gTXVsdGlwbGUgdGhyZWFkcyBjb3VsZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUg
c2FtZSB0aW1lLgorICAgIFN0cnVjdHVyZUlEIGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOwor
ICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3RT
ZWVuU3RydWN0dXJlID0gY29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
bV9sYXN0U2VlblN0cnVjdHVyZUlEKTsKLSAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyLCBjb2RlQmxvY2ssIGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RT
ZWVuU3RydWN0dXJlID0gY29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
aWQpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIGxhc3RTZWVuU3Ry
dWN0dXJlKTsKICAgICBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCi12b2lkIEFycmF5
UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKQor
dm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2spCiB7CisgICAgLy8gTXVsdGlwbGUgdGhyZWFkcyBjb3Vs
ZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAgIFN0cnVjdHVyZUlE
IGlkID0gbV9sYXN0U2VlblN0cnVjdHVyZUlEOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSB1bmxpbmtlZENvZGVCbG9j
ay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KGlkKTsKKyAgICBjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24obGFzdFNlZW5TdHJ1Y3R1cmUsIG51bGxwdHIpOworICAgIAorICAgIG1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRCA9IDA7Cit9CisKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogbGFzdFNlZW5T
dHJ1Y3R1cmUpCit7CisgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxhc3RTZWVuU3RydWN0
dXJlLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKK30KKwordm9pZCBBcnJheVByb2ZpbGU6
OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkKK3sKKyAgICAvLyBNdWx0aXBsZSB0
aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuIFRoYXQg
d29uJ3QgbGVhZAorICAgIC8vIHRvIGFueSBmb3JtIG9mIGNvcnJ1cHRpb24sIGJ1dCBjb3VsZCBj
YXVzZSB1cyB0byBnbyBkb3duICFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKKyAgICAvLyBw
YXRoIHNpbXVsdGFuZW91c2x5LgogICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9k
ZXNGcm9tU3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlk
UGVyZm9ybUZpcnN0UnVuUHJ1bmluZwpAQCAtMTQwLDggKzE2MywxMSBAQCB2b2lkIEFycmF5UHJv
ZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0CiAgICAgCiAgICAgbV9tYXlJbnRlcmNlcHRJbmRl
eGVkQWNjZXNzZXMgfD0KICAgICAgICAgbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygp
OwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUo
bGFzdFNlZW5TdHJ1Y3R1cmUpCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxh
c3RTZWVuU3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKTsKKyAgICBpZiAobGV4aWNhbEdsb2JhbE9i
amVjdCAmJiBnbG9iYWxPYmplY3QgJiYgZ2xvYmFsT2JqZWN0ICE9IGxleGljYWxHbG9iYWxPYmpl
Y3QpCisgICAgICAgIG1fb2JzZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmplY3QgPSB0cnVlOworICAg
IGlmIChnbG9iYWxPYmplY3QKKyAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKQogICAgICAgICAmJiAhZ2xvYmFsT2JqZWN0
LT5pc09yaWdpbmFsVHlwZWRBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkpCiAgICAg
ICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CiB9CkBAIC0xNjMsMTMg
KzE4OSwxMyBAQCB2b2lkIEFycmF5UHJvZmlsZTo6b2JzZXJ2ZUluZGV4ZWRSZWFkKFZNCiAgICAg
fQogfQogCi1DU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCitDU3RyaW5nIEFy
cmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAg
ICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2spOwotICAgIHJldHVy
biBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGxvY2tlcik7CisgICAgY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jayk7CisgICAgcmV0dXJuIGJyaWVmRGVzY3JpcHRpb25X
aXRob3V0VXBkYXRpbmcoKTsKIH0KIAotQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3Jp
cHRpb25XaXRob3V0VXBkYXRpbmcoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKK0NTdHJpbmcg
QXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKCkKIHsKICAgICBT
dHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpAQCAtMTg0LDYg
KzIxMCw4IEBAIENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uV2kKICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiSW50ZXJjZXB0Iik7CiAgICAgaWYgKG1fdXNlc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVzKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJPcmlnaW5hbCIpOwor
ICAgIGlmIChtX29ic2VydmVkRGlmZmVyZW50R2xvYmFsT2JqZWN0KQorICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJEaWZmZXJlbnRHbG9iYWwiKTsKIAogICAgIHJldHVybiBvdXQudG9DU3RyaW5n
KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogCiAvLyBUaGlzIGlzIGEgYml0ZmllbGQgd2hl
cmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFjY2VzcyB0aGF0IHdlIGhh
dmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0aGF0IHVzZSB0aGUgbG93
ZXIgYml0cy4KQEAgLTIwMSw2ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9tYXlJbnRl
cmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2luYWxBcnJh
eVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmco
ZmFsc2UpCisgICAgICAgICwgbV9vYnNlcnZlZERpZmZlcmVudEdsb2JhbE9iamVjdChmYWxzZSkK
ICAgICB7CiAgICAgfQogICAgIApAQCAtMjE3LDIyICsyMTksMjcgQEAgcHVibGljOgogICAgIHZv
aWQgb2JzZXJ2ZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKSB7IG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOyB9CiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVy
ZS0+aWQoKTsgfQogCi0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7Ci0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJl
KiBsYXN0U2VlblN0cnVjdHVyZSk7CisgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
VW5saW5rZWRDb2RlQmxvY2sqKTsKKyAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihD
b2RlQmxvY2sqKTsKKyAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKKyAgICB2b2lkIGNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlLCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgCiAgICAgdm9pZCBvYnNlcnZlQXJyYXlNb2RlKEFy
cmF5TW9kZXMgbW9kZSkgeyBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBtb2RlOyB9CiAgICAgdm9p
ZCBvYnNlcnZlSW5kZXhlZFJlYWQoVk0mLCBKU0NlbGwqLCB1bnNpZ25lZCBpbmRleCk7CiAKLSAg
ICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
KSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQotICAgIGJvb2wgbWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsg
cmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CisgICAgQXJyYXlNb2RlcyBv
YnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2Rlczsg
fQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4g
bV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXM7IH0KICAgICAKLSAgICBib29sIG1heVN0b3Jl
VG9Ib2xlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3Rv
cmVUb0hvbGU7IH0KLSAgICBib29sIG91dE9mQm91bmRzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZCb3VuZHM7IH0KKyAgICBib29sIG1heVN0b3JlVG9I
b2xlKCkgY29uc3QgeyByZXR1cm4gbV9tYXlTdG9yZVRvSG9sZTsgfQorICAgIGJvb2wgb3V0T2ZC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBtX291dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1
c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29u
c3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVz
ZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVzOyB9CisgICAgdm9pZCBzZXREb2VzTm90VXNlT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMoKSB7IG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7IH0KIAot
ICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBD
b2RlQmxvY2sqKTsKLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmco
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJik7CisgICAgYm9vbCBvYnNlcnZlZERpZmZlcmVudEds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmpl
Y3Q7IH0KKworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbihDb2RlQmxvY2sqKTsKKyAgICBD
U3RyaW5nIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0VXBkYXRpbmcoKTsKICAgICAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTI0NSw2ICsyNTIs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgOiAx
OwogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgOiAxOwogICAgIGJvb2wg
bV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsKKyAgICBib29sIG1fb2JzZXJ2ZWREaWZm
ZXJlbnRHbG9iYWxPYmplY3QgOiAxOwogICAgIEFycmF5TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9k
ZXMgeyAwIH07CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBvcCA6Z2V0
X2FyZ3VtZW50LAogICAgICAgICBpbmRleDogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsK
LSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDphcmd1bWVudF9jb3VudCwKQEAgLTE4Myw3ICsxODMsNyBA
QCBvcCA6dG9fdGhpcywKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJ
RDogU3RydWN0dXJlSUQsCiAgICAgICAgIHRvVGhpc1N0YXR1czogVG9UaGlzU3RhdHVzLAotICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmls
ZS4qLAogICAgIH0KIAogb3AgOmNoZWNrX3RkeiwKQEAgLTMwOSw3ICszMDksNyBAQCBvcF9ncm91
cCA6VmFsdWVQcm9maWxlZEJpbmFyeU9wLAogICAgICAgICByaHM6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZQor
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3AgOmJpdG5vdCwKQEAg
LTMxOCw3ICszMTgsNyBAQCBvcCA6Yml0bm90LAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLioKICAgICB9CiAKIG9wX2dyb3Vw
IDpVbmFyeU9wLApAQCAtMzYzLDcgKzM2Myw3IEBAIG9wIDp0b19vYmplY3QsCiAgICAgICAgIG1l
c3NhZ2U6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmls
ZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9
CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5hcnlPcCwKQEAgLTM3Niw3ICszNzYsNyBAQCBv
cF9ncm91cCA6VmFsdWVQcm9maWxlZFVuYXJ5T3AsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxS
ZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6
bmVnYXRlLApAQCAtNDQ1LDcgKzQ0NSw3IEBAIG9wIDppbl9ieV92YWwsCiAgICAgICAgIHByb3Bl
cnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDppbl9ieV9pZCwKQEAgLTQ3Niw4ICs0NzYsOSBAQCBvcCA6
Z2V0X2J5X2lkLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogeworICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgYXJyYXlQ
cm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9k
ZU1ldGFkYXRhLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCiBvcCA6
Z2V0X2J5X2lkX3dpdGhfdGhpcywKQEAgLTQ4OCw3ICs0ODksNyBAQCBvcCA6Z2V0X2J5X2lkX3dp
dGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpnZXRfYnlfdmFsX3dpdGhfdGhpcywKQEAgLTQ5
OSw3ICs1MDAsNyBAQCBvcCA6Z2V0X2J5X3ZhbF93aXRoX3RoaXMsCiAgICAgICAgIHByb3BlcnR5
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9m
aWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAg
IH0KIAogb3AgOmdldF9ieV9pZF9kaXJlY3QsCkBAIC01MDksNyArNTEwLDcgQEAgb3AgOmdldF9i
eV9pZF9kaXJlY3QsCiAgICAgICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBs
bGludAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwgIyBub3QgdXNlZCBpbiBsbGlu
dAogICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5z
aWduZWQsCiAgICAgfQpAQCAtNTIwLDcgKzUyMSw3IEBAIG9wIDpnZXRfcHJvdG90eXBlX29mLAog
ICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsK
LSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUuKiwKICAgICB9CiAKIG9wIDp0cnlfZ2V0X2J5X2lkLApAQCAtNTMwLDcgKzUzMSw3IEBA
IG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF9ieV9pZCwKQEAgLTU3
MSw4ICs1NzIsOCBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxS
ZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6IEdldEJ5VmFsSGlzdG9yeSwKICAgICB9CiAK
QEAgLTU4Myw3ICs1ODQsNyBAQCBvcCA6Z2V0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgcHJvcGVy
dHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAg
ICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25l
ZCwKICAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxdLApAQCAtNjMyLDcgKzYz
Myw3IEBAIG9wIDpwdXRfYnlfdmFsLAogICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwK
KyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpwdXRf
YnlfdmFsX3dpdGhfdGhpcywKQEAgLTY1Miw3ICs2NTMsNyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJl
Y3QsCiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7
Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmRlbF9ieV92YWwsCkBAIC04NDIsNyAr
ODQzLDcgQEAgb3AgOmNhbGwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxs
TGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnRhaWxf
Y2FsbCwKQEAgLTg1NCw3ICs4NTUsNyBAQCBvcCA6dGFpbF9jYWxsLAogICAgIH0sCiAgICAgbWV0
YWRhdGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUu
KiwKICAgICB9CiAKIG9wIDpjYWxsX2V2YWwsCkBAIC04NjcsNyArODY4LDcgQEAgb3AgOmNhbGxf
ZXZhbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y2FsbF92YXJhcmdzLApAQCAt
ODgwLDggKzg4MSw4IEBAIG9wIDpjYWxsX3ZhcmFyZ3MsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBp
bnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5
UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVBy
b2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwK
ICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNsdWRpbmdUaGlzOiB1bnNp
Z25lZCwKQEAgLTkwMSw4ICs5MDIsOCBAQCBvcCA6dGFpbF9jYWxsX3ZhcmFyZ3MsCiAgICAgICAg
IGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcnJh
eVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAor
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAorICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUuKiwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgYXJnQ291bnRJbmNs
dWRpbmdUaGlzOiB1bnNpZ25lZApAQCAtOTIyLDggKzkyMyw4IEBAIG9wIDp0YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHMsCiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKLSAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpjb25z
dHJ1Y3QsCkBAIC05MzQsOCArOTM1LDggQEAgb3AgOmNvbnN0cnVjdCwKICAgICAgICAgYXJndjog
dW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogeworICAgICAgICBwcm9maWxlOiBWYWx1
ZVByb2ZpbGUuKiwKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAogb3AgOmNvbnN0cnVjdF92YXJh
cmdzLApAQCAtOTQ4LDggKzk0OSw4IEBAIG9wIDpjb25zdHJ1Y3RfdmFyYXJncywKICAgICAgICAg
Zmlyc3RWYXJBcmc6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisg
ICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCisgICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBhcmdDb3VudEluY2x1
ZGluZ1RoaXM6IHVuc2lnbmVkCkBAIC0xMDI4LDcgKzEwMjksNyBAQCBvcCA6Z2V0X2Zyb21fc2Nv
cGUsCiAgICAgICAgICAgICBzdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwK
ICAgICAgICAgfSwKICAgICAgICAgb3BlcmFuZDogdWludHB0cl90LCAjb2Zmc2V0IDYKLSAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLCAjIG9mZnNldCA3CisgICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZS4qLCAjIG9mZnNldCA3CiAgICAgfSwKICAgICBtZXRhZGF0YV9pbml0aWFsaXpl
cnM6IHsKICAgICAgICAgZ2V0UHV0SW5mbzogOmdldFB1dEluZm8sCkBAIC0xMDY1LDcgKzEwNjYs
NyBAQCBvcCA6Z2V0X2Zyb21fYXJndW1lbnRzLAogICAgICAgICBpbmRleDogdW5zaWduZWQsCiAg
ICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF90b19hcmd1
bWVudHMsCkBAIC0xMTczLDcgKzExNzQsNyBAQCBvcCA6ZW51bWVyYXRvcl9uZXh0LAogICAgICAg
ICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewot
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9y
TWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMTg3LDggKzExODgsOCBAQCBvcCA6ZW51bWVyYXRvcl9n
ZXRfYnlfdmFsLAogICAgICAgICBlbnVtZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCi0gICAgICAg
IGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUuKiwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgZW51
bWVyYXRvck1ldGFkYXRhOiBFbnVtZXJhdG9yTWV0YWRhdGEsCiAgICAgfQogCkBAIC0xMjAyLDcg
KzEyMDMsNyBAQCBvcCA6ZW51bWVyYXRvcl9pbl9ieV92YWwsCiAgICAgICAgIGVudW1lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAg
ICB9CiAKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG9wIDplbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHksCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6
IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyNDgsMTIgKzEyNDksMTIgQEAgb3Ag
Oml0ZXJhdG9yX29wZW4sCiAgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGl0ZXJhYmxlUHJvZmlsZTogVmFsdWVQcm9maWxlLios
CisgICAgICAgIGl0ZXJhdG9yUHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIG5leHRQ
cm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJh
dGlvbk1vZGVNZXRhZGF0YSwKLSAgICAgICAgaXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGl0ZXJh
dG9yUHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRN
b2RlTWV0YWRhdGEsCi0gICAgICAgIG5leHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwK
ICAgICBjaGVja3BvaW50czogewogICAgICAgICBzeW1ib2xDYWxsOiBuaWwsCkBAIC0xMjcxLDE0
ICsxMjcyLDE0IEBAIG9wIDppdGVyYXRvcl9uZXh0LAogICAgICAgICBzdGFja09mZnNldDogdW5z
aWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogeworICAgICAgICBuZXh0UmVzdWx0UHJvZmls
ZTogVmFsdWVQcm9maWxlLiosCisgICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwK
KyAgICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgaXRlcmFibGVQ
cm9maWxlOiBBcnJheVByb2ZpbGUuKiwKICAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJh
dGlvbk1vZGVNZXRhZGF0YSwKLSAgICAgICAgaXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUs
CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIG5leHRS
ZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgICAgIGRvbmVNb2RlTWV0YWRhdGE6IEdl
dEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIGRvbmVQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAg
ICAgICAgIHZhbHVlTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAotICAgICAgICB2
YWx1ZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAg
bmV4dFJlc3VsdDogSlNWYWx1ZSwKQEAgLTEzMjIsNyArMTMyMyw3IEBAIG9wIDpnZXRfaW50ZXJu
YWxfZmllbGQsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6cHV0X2ludGVybmFsX2ZpZWxkLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
T3BlcmFuZHNGb3JDaGVja3BvaW50LmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NywyMCArNTcsMjAgQEAgVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVG
b3JJbXBsKEJ5dGVjbwogICAgIFVOVVNFRF9QQVJBTShjaGVja3BvaW50SW5kZXgpOwogICAgIGlm
IGNvbnN0ZXhwciAoQnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3Bl
bikgewogICAgICAgICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBjYXNlIE9w
SXRlcmF0b3JPcGVuOjpzeW1ib2xDYWxsOiByZXR1cm4gJm1ldGFkYXRhLm1faXRlcmF0b3JQcm9m
aWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1cm4gJm1ldGFk
YXRhLm1fbmV4dFByb2ZpbGU7CisgICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENh
bGw6IHJldHVybiBtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0
ZXJhdG9yT3Blbjo6Z2V0TmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFByb2ZpbGU7CiAgICAg
ICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAog
ICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKEJ5dGVjb2RlTWV0YWRhdGE6Om9wY29kZUlEID09IG9w
X2l0ZXJhdG9yX25leHQpIHsKICAgICAgICAgc3dpdGNoIChjaGVja3BvaW50SW5kZXgpIHsKLSAg
ICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHJldHVybiAmbWV0YWRhdGEu
bV9uZXh0UmVzdWx0UHJvZmlsZTsKLSAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Z2V0RG9u
ZTogcmV0dXJuICZtZXRhZGF0YS5tX2RvbmVQcm9maWxlOwotICAgICAgICBjYXNlIE9wSXRlcmF0
b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuICZtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKKyAgICAg
ICAgY2FzZSBPcEl0ZXJhdG9yTmV4dDo6Y29tcHV0ZU5leHQ6IHJldHVybiBtZXRhZGF0YS5tX25l
eHRSZXN1bHRQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiBy
ZXR1cm4gbWV0YWRhdGEubV9kb25lUHJvZmlsZTsKKyAgICAgICAgY2FzZSBPcEl0ZXJhdG9yTmV4
dDo6Z2V0VmFsdWU6IHJldHVybiBtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZTsKICAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSAKLSAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX3Byb2ZpbGU7CisgICAgICAgIHJldHVybiBt
ZXRhZGF0YS5tX3Byb2ZpbGU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlTWV0YWRh
dGE+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NCw2ICszNzQsMTAgQEAgQ29kZUJsb2Nr
OjpDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIAogYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSogc2NvcGUpCiB7Cisg
ICAgLy8gV2UgY2FuJ3QgZmluYWxpemUgYSBHQyB3aGlsZSBpbiBoZXJlIHNpbmNlIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRvCisgICAgLy8gbWFrZSBzdXJlIG91ciBWYWx1ZVByb2ZpbGVzIGFuZCBB
cnJheVByb2ZpbGVzIGFsbCBwb2ludCB0byBwcm9wZXIgbG9jYXRpb25zLgorICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsgCisKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgZmluaXNoQ3JlYXRpb25Db21tb24odm0pOwogCkBAIC0zODMsOCArMzg3LDEx
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgdm0u
ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPnJlbW92ZVVuZXhlY3V0ZWRSYW5nZShvd25lckV4
ZWN1dGFibGUtPnNvdXJjZUlEKCksIG93bmVyRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0KHZtKSwgb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KHZtKSk7
CiAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUgPSBvd25lckV4ZWN1
dGFibGUtPnRvcExldmVsRXhlY3V0YWJsZSgpOwotICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVu
bGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRvcExldmVsRXhlY3V0YWJsZSk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisKKyAgICAvLyBX
ZSB3YWl0IHRvIGluaXRpYWxpemUgdGVtcGxhdGUgb2JqZWN0cyB1bnRpbCB0aGUgZW5kIG9mIGZp
bmlzaENyZWF0aW9uIGJlZWNhdXNlIGl0IGNhbgorICAgIC8vIHRocm93LiBXZSByZWx5IG9uIGxp
bmtpbmcgdG8gcHV0IHRoZSBDb2RlQmxvY2sgaW50byBhIGNvaGVyZW50IHN0YXRlLCBzbyB3ZSBj
YW4ndCB0aHJvdworICAgIC8vIHVudGlsIHdlJ3JlIGFsbCBkb25lIGxpbmtpbmcuCisgICAgVmVj
dG9yPHVuc2lnbmVkPiB0ZW1wbGF0ZU9iamVjdEluZGljZXMgPSBzZXRDb25zdGFudFJlZ2lzdGVy
cyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxv
Y2stPmNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpKTsKIAogICAgIC8vIFdlIGFs
cmVhZHkgaGF2ZSB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmb3IgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudCBzaW5jZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlCiAgICAgLy8gdGhlIG1vZHVsZSBlbnZp
cm9ubWVudHMgYmVmb3JlIGxpbmtpbmcgdGhlIGNvZGUgYmxvY2suIFdlIHJlcGxhY2UgdGhlIHN0
b3JlZCBzeW1ib2wgdGFibGUgd2l0aCB0aGUgYWxyZWFkeSBjbG9uZWQgb25lLgpAQCAtNDM1LDcg
KzQ0Miw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAv
LyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgog
ICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVs
ZUVudmlyb25tZW50czsKIAotICAgIGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8m
IC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8mIC8qbWV0YWRhdGEqLykg
eworICAgIGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24q
LywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8VmFsdWVQcm9maWxlKiwgZGVjbHR5cGUobWV0YWRhdGEubV9w
cm9maWxlKT4pOwogICAgICAgICBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7
CiAgICAgfTsKIApAQCAtNDk5LDkgKzUwNyw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFMKIAogICAgICAgICBMSU5LKE9wR2V0QnlJZCwgcHJvZmlsZSkKIAotICAg
ICAgICBMSU5LKE9wRW51bWVyYXRvck5leHQsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BFbnVt
ZXJhdG9ySW5CeVZhbCwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JIYXNPd25Q
cm9wZXJ0eSwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JOZXh0KQorICAgICAg
ICBMSU5LKE9wRW51bWVyYXRvckluQnlWYWwpCisgICAgICAgIExJTksoT3BFbnVtZXJhdG9ySGFz
T3duUHJvcGVydHkpCiAgICAgICAgIExJTksoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIHByb2ZpbGUp
CiAKICAgICAgICAgTElOSyhPcENhbGwsIHByb2ZpbGUpCkBAIC01NjMsNyArNTcxLDYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoYnl0ZWNvZGUubV9yZXNvbHZlVHlwZSAhPSBSZXNvbHZlZENsb3N1cmVWYXIpOwog
CiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9n
bG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRl
bnQsIEdldCwgYnl0ZWNvZGUubV9yZXNvbHZlVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbik7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKIAogICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IG9wLnR5
cGU7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2xvY2FsU2NvcGVEZXB0aCA9IG9wLmRlcHRoOwpA
QCAtNTk4LDcgKzYwNSw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFMKIAogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5
dGVjb2RlLm1fdmFyKTsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3Ry
YWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9sb2NhbFNjb3BlRGVw
dGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUo
KSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7Ci0gICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAogICAgICAgICAgICAgbWV0
YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVz
b2x2ZU1vZGUoKSwgb3AudHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9u
TW9kZSgpLCBieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBp
ZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpCkBAIC02MzIsNyArNjM4LDYgQEAgYm9vbCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKICAgICAgICAgICAgIG1ldGFk
YXRhLm1fd2F0Y2hwb2ludFNldCA9IG51bGxwdHI7CiAgICAgICAgICAgICBSZXNvbHZlT3Agb3Ag
PSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ5dGVjb2Rl
Lm1fc3ltYm9sVGFibGVPclNjb3BlRGVwdGguc2NvcGVEZXB0aCgpLCBzY29wZSwgaWRlbnQsIFB1
dCwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAogICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgb3Au
dHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpLCBieXRlY29k
ZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSk7CiAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBH
bG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8
IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQpAQCAtNjY1LDcgKzY3MCw2IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgICAgICAvLyBFdmVuIHRo
b3VnaCB0eXBlIHByb2ZpbGluZyBtYXkgYmUgcHJvZmlsaW5nIGVpdGhlciBhIEdldCBvciBhIFB1
dCwgd2UgY2FuIGFsd2F5cyBjbGFpbSBhIEdldCBiZWNhdXNlCiAgICAgICAgICAgICAgICAgLy8g
d2UncmUgYWJzdHJhY3RseSAicmVhZCJpbmcgZnJvbSBhIEpTU2NvcGUuCiAgICAgICAgICAgICAg
ICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0
LmdldCgpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX3Jl
c29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAogICAg
ICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBNb2R1
bGVWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AubGV4aWNhbEVudmly
b25tZW50LT5zeW1ib2xUYWJsZSgpOwpAQCAtNzYxLDYgKzc2NSw1NiBAQCBib29sIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAjdW5kZWYgTElOS19GSUVMRAogI3VuZGVmIExJ
TksKIAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBudW1iZXJPZkFyZ3VtZW50VmFs
dWVQcm9maWxlcygpOyAvLyBUaGUgZmlyc3QgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMo
KSBwcm9maWxlcyBhcmUgYXJndW1lbnQgdmFsdWUgcHJvZmlsZXMKKworICAgICAgICBpZiAobV9t
ZXRhZGF0YSkgeworICAgICAgICAgICAgYXV0byBhc3NpZ24gPSBbJl0gKFZhbHVlUHJvZmlsZSom
IHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlID0gJnVubGlua2VkQ29kZUJsb2Nr
LT52YWx1ZVByb2ZpbGUoaW5kZXgrKyk7CisgICAgICAgICAgICB9OworCisjZGVmaW5lIFZJU0lU
KF9fb3ApIFwKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgeyBhc3NpZ24obWV0YWRhdGEubV9wcm9maWxlKTsgfSk7CisgICAgICAgICAg
ICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKFZJU0lUKQorI3VuZGVmIFZJU0lU
CisKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsgCisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1faXRl
cmFibGVQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYXRv
clByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX25leHRQcm9maWxl
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9w
SXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAgICAgYXNz
aWduKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUpOworICAgICAgICAgICAgICAgIGFzc2ln
bihtZXRhZGF0YS5tX2RvbmVQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRh
dGEubV92YWx1ZVByb2ZpbGUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtVmFsdWVQcm9m
aWxlcygpKTsKKyAgICB9CisKKyAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CisKKyAgICAgICAgYXV0byBhc3NpZ24gPSBbJl0gKEFycmF5UHJvZmlsZSom
IHByb2ZpbGUpIHsKKyAgICAgICAgICAgIHByb2ZpbGUgPSAmdW5saW5rZWRDb2RlQmxvY2stPmFy
cmF5UHJvZmlsZShpbmRleCsrKTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBXZSBvbmx5IHNo
YXJlIGFycmF5IHByb2ZpbGVzIGZvciB0aGUgb3Bjb2RlcyBpbiBGT1JfRUFDSF9PUENPREVfV0lU
SF9BUlJBWV9QUk9GSUxFLgorICAgICAgICAvLyBXZSBkb24ndCB5ZXQgc2hhcmUgYXJyYXkgcHJv
ZmlsZXMgZm9yIHRoaW5ncyB3aXRoIExMSW50IENhbGxMaW5rSW5mb3MuCisjZGVmaW5lIFZJU0lU
KF9fb3ApIFwKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1l
dGFkYXRhKSB7IGFzc2lnbihtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworICAgICAgICBG
T1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKFZJU0lUKQorI3VuZGVmIFZJU0lUCisK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeworICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxl
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gdW5saW5r
ZWRDb2RlQmxvY2stPm51bUFycmF5UHJvZmlsZXMoKSk7CisgICAgfQorCiAgICAgaWYgKG1fdW5s
aW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2RlcygpKQog
ICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIo
KTsKIApAQCAtNzgxLDYgKzgzNSw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFMKICAgICBpZiAobV9tZXRhZGF0YSkKICAgICAgICAgdm0uaGVhcC5yZXBvcnRFeHRy
YU1lbW9yeUFsbG9jYXRlZChtX21ldGFkYXRhLT5zaXplSW5CeXRlcygpKTsKIAorICAgIGluaXRp
YWxpemVUZW1wbGF0ZU9iamVjdHModG9wTGV2ZWxFeGVjdXRhYmxlLCB0ZW1wbGF0ZU9iamVjdElu
ZGljZXMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg2OSwxOSArOTI2LDIwIEBAIENvZGVCbG9jazo6fkNv
ZGVCbG9jaygpCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnNl
dENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3du
Pj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9u
PiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLCBTY3JpcHRFeGVjdXRhYmxlKiB0
b3BMZXZlbEV4ZWN1dGFibGUpCitWZWN0b3I8dW5zaWduZWQ+IENvZGVCbG9jazo6c2V0Q29uc3Rh
bnRSZWdpc3RlcnMoY29uc3QgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29u
c3RhbnRzLCBjb25zdCBGaXhlZFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25z
dGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pCiB7CiAgICAgVk0mIHZtID0gKm1fdm07Ci0g
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKIAorICAgIFZlY3Rvcjx1
bnNpZ25lZD4gdGVtcGxhdGVPYmplY3RJbmRpY2VzOworCiAgICAgQVNTRVJUKGNvbnN0YW50cy5z
aXplKCkgPT0gY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLnNpemUoKSk7Ci0gICAg
c2l6ZV90IGNvdW50ID0gY29uc3RhbnRzLnNpemUoKTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IGNv
bnN0YW50cy5zaXplKCk7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMucmVzaXplVG9GaXQoY291bnQp
OwogICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBKU1ZhbHVlIGNv
bnN0YW50ID0gY29uc3RhbnRzW2ldLmdldCgpOwogICAgICAgICBTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24gcmVwcmVzZW50YXRpb24gPSBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb25b
aV07CiAgICAgICAgIHN3aXRjaCAocmVwcmVzZW50YXRpb24pIHsKQEAgLTkwNSwxNyArOTYzLDI3
IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb24KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7CiAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpzRHluYW1pY0Nhc3Q8SlNUZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVjdXRhYmxlLT5jcmVhdGVUZW1wbGF0
ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7Ci0gICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yKj4odm0sIGNlbGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVt
cGxhdGVPYmplY3RJbmRpY2VzLmFwcGVuZChpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBtX2NvbnN0YW50
UmVnaXN0ZXJzW2ldLnNldCh2bSwgdGhpcywgY29uc3RhbnQpOwogICAgIH0KKworICAgIHJldHVy
biB0ZW1wbGF0ZU9iamVjdEluZGljZXM7Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjppbml0aWFsaXpl
VGVtcGxhdGVPYmplY3RzKFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSwgY29u
c3QgVmVjdG9yPHVuc2lnbmVkPiYgdGVtcGxhdGVPYmplY3RJbmRpY2VzKQoreworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKCkpOworICAgIGZvciAodW5zaWduZWQgaSA6
IHRlbXBsYXRlT2JqZWN0SW5kaWNlcykgeworICAgICAgICBhdXRvKiBkZXNjcmlwdG9yID0ganND
YXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj4obV9jb25zdGFudFJlZ2lzdGVyc1tpXS5n
ZXQoKSk7CisgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVjdXRhYmxl
LT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvcik7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgIG1fY29uc3Rh
bnRSZWdpc3RlcnNbaV0uc2V0KHZtKCksIHRoaXMsIHRlbXBsYXRlT2JqZWN0KTsKKyAgICB9CiB9
CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRBbHRlcm5hdGl2ZShWTSYgdm0sIENvZGVCbG9jayogYWx0
ZXJuYXRpdmUpCkBAIC05MjgsOCArOTk2LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNldEFsdGVybmF0
aXZlKFZNJiB2bSwgQwogdm9pZCBDb2RlQmxvY2s6OnNldE51bVBhcmFtZXRlcnModW5zaWduZWQg
bmV3VmFsdWUpCiB7CiAgICAgbV9udW1QYXJhbWV0ZXJzID0gbmV3VmFsdWU7Ci0KLSAgICBtX2Fy
Z3VtZW50VmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4oT3B0aW9uczo6
dXNlSklUKCkgPyBuZXdWYWx1ZSA6IDApOwogfQogCiBDb2RlQmxvY2sqIENvZGVCbG9jazo6c3Bl
Y2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKQpAQCAtOTkwLDcgKzEwNTYsNyBAQCB2b2lkIENvZGVC
bG9jazo6dmlzaXRDaGlsZHJlbihWaXNpdG9yJiB2CiAgICAgc3Ryb25nbHlWaXNpdFN0cm9uZ1Jl
ZmVyZW5jZXMobG9ja2VyLCB2aXNpdG9yKTsKICAgICBzdHJvbmdseVZpc2l0V2Vha1JlZmVyZW5j
ZXMobG9ja2VyLCB2aXNpdG9yKTsKICAgICAKLSAgICBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigq
c3Vic3BhY2UoKSkuYWRkKHRoaXMpOworICAgIHZtKCkuY29kZUJsb2NrU3BhY2Uuc2V0LmFkZCh0
aGlzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTE1MTcsNyArMTU4Mywz
NSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKIAotICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7CisgICAgeworICAg
ICAgICAvLyBXZSBvbmx5IHVwZGF0ZSB0aGUgcHJvZmlsZXMgdGhhdCB0aGUgVW5saW5rZWRDb2Rl
QmxvY2sgZG9lc24ndCBvd24uCisKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyNkZWZpbmUg
VVBEQVRFKF9fb3ApIFwKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZd
IChhdXRvJiBtZXRhZGF0YSkgeyBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmls
ZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24odGhpcyk7IH0pOworICAgICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX1dJVEhfTExJTlRfQ0FMTF9MSU5LX0lORk8oVVBEQVRFKQorI3VuZGVmIFVQREFU
RQorCisgICAgICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2F0Y2g+KFsmXShhdXRvJiBt
ZXRhZGF0YSkgeworICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX2J1ZmZlcikgeworICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+Zm9yRWFjaChbJl0oVmFsdWVQcm9m
aWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgICAgIGxhenlPcGVyYW5kVmFsdWVQcm9maWxl
cyhsb2NrZXIpLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKKyNlbmRpZgorICAg
ICAgICB9CisKKyAgICAgICAgZm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUoWyZdKEFycmF5
QWxsb2NhdGlvblByb2ZpbGUmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIHByb2ZpbGUudXBkYXRl
UHJvZmlsZSgpOworICAgICAgICB9KTsKKyAgICB9CiAKICNpZiBFTkFCTEUoSklUKQogICAgIGJv
b2wgaXNFbGlnaWJsZUZvckxMSW50RG93bmdyYWRlID0gbV9pc0VsaWdpYmxlRm9yTExJbnREb3du
Z3JhZGU7CkBAIC0xNjAzLDcgKzE2OTcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoCiAgICAgfTsKICAgICB1cGRhdGVBY3Rpdml0eSgpOwogCi0gICAgVk06OlNw
YWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5jb2Rl
QmxvY2tTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOwogCiAgICAgLy8gSW4gQ29kZUJsb2NrOjpzaG91
bGRWaXNpdFN0cm9uZ2x5KCkgd2UgbWF5IGhhdmUgZGVjaWRlZCB0byBza2lwIHZpc2l0aW5nIHRo
aXMKICAgICAvLyBjb2RlQmxvY2suIEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLCB3ZSdyZSBkb25l
IHdpdGggdGhlIHZlcmlmaWVyIEdDLiBTbywgbGV0J3MKQEAgLTI3NzMsNyArMjg2Nyw3IEBAIEFy
cmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUKICAgICBzd2l0Y2ggKGluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpKSB7CiAjZGVmaW5lIENBU0UxKE9wKSBcCiAgICAgY2FzZSBPcDo6
b3Bjb2RlSUQ6IFwKLSAgICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRh
dGEodGhpcykubV9hcnJheVByb2ZpbGU7CisgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbi0+YXM8
T3A+KCkubWV0YWRhdGEodGhpcykubV9hcnJheVByb2ZpbGU7CiAKICNkZWZpbmUgQ0FTRTIoT3Ap
IFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXApAQCAtMjc4NSwxMyArMjg3OSw2IEBAIEFycmF5
UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUKICN1bmRlZiBDQVNFMQogI3VuZGVm
IENBU0UyCiAKLSAgICBjYXNlIE9wR2V0QnlJZDo6b3Bjb2RlSUQ6IHsKLSAgICAgICAgYXV0byBi
eXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0gICAgICAgIGlmIChtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkKLSAgICAgICAg
ICAgIHJldHVybiAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5
UHJvZmlsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTI5MDAsMTkgKzI5ODcsMTkgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0
ZUFsbFZhbHVlUHJvZmlsZVByZQogICAgICAgICAgICAgbnVtU2FtcGxlcyA9IFZhbHVlUHJvZmls
ZTo6bnVtYmVyT2ZCdWNrZXRzOyAvLyBXZSBkb24ndCB3YW50IHByb2ZpbGVzIHRoYXQgYXJlIGV4
dHJlbWVseSBob3QgdG8gYmUgZ2l2ZW4gbW9yZSB3ZWlnaHQuCiAgICAgICAgIG51bWJlck9mU2Ft
cGxlc0luUHJvZmlsZXMgKz0gbnVtU2FtcGxlczsKICAgICAgICAgaWYgKGlzQXJndW1lbnQpIHsK
LSAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7Cisg
ICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm9maWxlLm51bWJlck9mU2FtcGxl
cygpIHx8IHByb2ZpbGUuaXNTYW1wbGVkQmVmb3JlKCkpCiAgICAgICAgICAgICBudW1iZXJPZkxp
dmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKLSAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKICAgICB9KTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAgICAgICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8T3BDYXRjaD4oWyZdKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAg
ICAgICBpZiAobWV0YWRhdGEubV9idWZmZXIpIHsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X2J1ZmZlci0+Zm9yRWFjaChbJl0oVmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9m
aWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0pOwpAQCAtMjkzMSwxMCArMzAxOCw4IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1
ZVByb2ZpbGVQcmUKIAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGljdGlvbnMo
KQogewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAKICAgICBm
b3JFYWNoQXJyYXlQcm9maWxlKFsmXShBcnJheVByb2ZpbGUmIHByb2ZpbGUpIHsKLSAgICAgICAg
cHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCB0aGlzKTsKKyAgICAgICAg
cHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24odGhpcyk7CiAgICAgfSk7CiAgICAgCiAg
ICAgZm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUoWyZdKEFycmF5QWxsb2NhdGlvblByb2Zp
bGUmIHByb2ZpbGUpIHsKQEAgLTMxNjQsNyArMzI0OSw3IEBAIFZhbHVlUHJvZmlsZSogQ29kZUJs
b2NrOjp0cnlHZXRWYWx1ZVByb2YKIAogI2RlZmluZSBDQVNFKE9wKSBcCiAgICAgY2FzZSBPcDo6
b3Bjb2RlSUQ6IFwKLSAgICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRh
dGEodGhpcykubV9wcm9maWxlOworICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb24tPmFzPE9wPigp
Lm1ldGFkYXRhKHRoaXMpLm1fcHJvZmlsZTsKIAogICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lU
SF9WQUxVRV9QUk9GSUxFKENBU0UpCiAKQEAgLTMxODEsMTAgKzMyNjYsMTAgQEAgVmFsdWVQcm9m
aWxlKiBDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZgogICAgIH0KIH0KIAotU3BlY3VsYXRlZFR5
cGUgQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVJbmRleChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KQorU3BlY3VsYXRlZFR5cGUgQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0
ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgaWYgKFZhbHVl
UHJvZmlsZSogdmFsdWVQcm9maWxlID0gdHJ5R2V0VmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGUtPmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgIHJldHVybiBTcGVjTm9uZTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24g
MjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIH5Db2RlQmxvY2soKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmdldCgpOyB9CisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZlVubGlua2VkQ29kZUJsb2NrKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKENvZGVCbG9jaywgbV91bmxpbmtlZENvZGUpOyB9CiAKICAgICBDU3RyaW5nIGlu
ZmVycmVkTmFtZSgpIGNvbnN0OwogICAgIENvZGVCbG9ja0hhc2ggaGFzaCgpIGNvbnN0OwpAQCAt
NDc0LDE5ICs0NzUsMTYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVu
dFZhbHVlUHJvZmlsZXMoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLnNpemUoKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9udW1QYXJhbWV0ZXJzKSB8
fCAhT3B0aW9uczo6dXNlSklUKCkpOwotICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJv
ZmlsZXMuc2l6ZSgpOworICAgICAgICByZXR1cm4gbnVtUGFyYW1ldGVycygpOwogICAgIH0KIAog
ICAgIFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQgYXJndW1l
bnRJbmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7IC8vIFRo
aXMgaXMgb25seSBjYWxsZWQgZnJvbSB0aGUgdmFyaW91cyBKSVQgY29tcGlsZXJzIG9yIHBsYWNl
cyB0aGF0IGZpcnN0IGNoZWNrIG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzIGJlZm9yZSBj
YWxsaW5nIHRoaXMuCi0gICAgICAgIFZhbHVlUHJvZmlsZSYgcmVzdWx0ID0gbV9hcmd1bWVudFZh
bHVlUHJvZmlsZXNbYXJndW1lbnRJbmRleF07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jaygpLT52YWx1ZVByb2ZpbGUoYXJndW1lbnRJbmRl
eCk7CiAgICAgfQogCiAgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgpOwotICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRp
Y3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2Rl
SW5kZXgpOworICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRl
Y29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdm9pZCBmb3JFYWNoVmFsdWVQcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3Rv
ciYpOwpAQCAtODg2LDcgKzg4NCw4IEBAIHB1YmxpYzoKICAgICBNZXRhZGF0YSYgbWV0YWRhdGEo
T3Bjb2RlSUQgb3Bjb2RlSUQsIHVuc2lnbmVkIG1ldGFkYXRhSUQpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9tZXRhZGF0YSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TWV0YWRhdGEq
PihtX21ldGFkYXRhLT5nZXQob3Bjb2RlSUQpKVttZXRhZGF0YUlEXTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChvcGNvZGVJRCwgb3Bjb2RlSUQgPT0gTWV0YWRhdGE6Om9wY29kZUlEKTsKKyAgICAg
ICAgcmV0dXJuIG1fbWV0YWRhdGEtPmdldDxNZXRhZGF0YT4oKVttZXRhZGF0YUlEXTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KQEAgLTkzOSw3ICs5MzgsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENv
dW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMpOwogCi0gICAgdm9pZCBzZXRD
b25zdGFudFJlZ2lzdGVycyhjb25zdCBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+
JiBjb25zdGFudHMsIGNvbnN0IEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4m
IGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9w
TGV2ZWxFeGVjdXRhYmxlKTsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IHNldENvbnN0YW50UmVnaXN0
ZXJzKGNvbnN0IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywg
Y29uc3QgRml4ZWRWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uKTsKKyAgICB2b2lkIGluaXRpYWxpemVUZW1wbGF0ZU9iamVj
dHMoU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBWZWN0b3I8dW5z
aWduZWQ+Jik7CiAKICAgICB2b2lkIHJlcGxhY2VDb25zdGFudChWaXJ0dWFsUmVnaXN0ZXIgcmVn
LCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKQEAgLTEwMTUsNyArMTAxNSw2IEBAIHByaXZhdGU6CiAg
ICAgLy8gZm9yIERGRyBjb2RlIGJsb2Nrcy4KICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXIgbV9sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXM7CiAjZW5kaWYKLSAgICBG
aXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwogCiAgICAg
Ly8gQ29uc3RhbnQgUG9vbAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWdpc3RlcikgPT0g
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIFJlZ2lzdGVyX211c3RfYmVfc2FtZV9zaXpl
X2FzX1dyaXRlQmFycmllcl9Vbmtub3duKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjgyMTgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMjIgKzM5LDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQ
cm9maWxlKGNvbnMKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9fb3Ap
IFwKLSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOworICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYygqbWV0YWRhdGEu
bV9wcm9maWxlLCBmYWxzZSk7IH0pOwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZB
TFVFX1BST0ZJTEUoVklTSVQpCiAKICN1bmRlZiBWSVNJVAogCiAgICAgICAgIG1fbWV0YWRhdGEt
PmZvckVhY2g8T3BJdGVyYXRvck9wZW4+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgCi0gICAgICAg
ICAgICBmdW5jKG1ldGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBmdW5jKG1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBm
dW5jKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMoKm1l
dGFkYXRhLm1faXRlcmFibGVQcm9maWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRh
ZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRh
dGEubV9uZXh0UHJvZmlsZSwgZmFsc2UpOwogICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAg
ICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGUsIGZhbHNlKTsKLSAgICAg
ICAgICAgIGZ1bmMobWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOwotICAgICAgICAgICAg
ZnVuYyhtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygq
bWV0YWRhdGEubV9uZXh0UmVzdWx0UHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygq
bWV0YWRhdGEubV9kb25lUHJvZmlsZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRh
dGEubV92YWx1ZVByb2ZpbGUsIGZhbHNlKTsKICAgICAgICAgfSk7CiAgICAgfSAgIAogCkBAIC02
NCwxMyArNjQsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2s6
OmZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIHsKICAgICBpZiAobV9t
ZXRhZGF0YSkgewotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChh
dXRvJiBtZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
Lm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQotICAgICAgICAgICAgICAgIGZ1bmMo
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7Ci0g
ICAgICAgIH0pOwotCiAjZGVmaW5lIFZJU0lUMShfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9y
RWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUpOyB9KTsKKyAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsgZnVuYygqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUpOyB9KTsKIAogI2RlZmluZSBW
SVNJVDIoX19vcCkgXAogICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlKTsg
fSk7CkBAIC04Miw3ICs3Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxl
KGNvbnMKICN1bmRlZiBWSVNJVDIKIAogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wSXRl
cmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBmdW5jKG1ldGFk
YXRhLm1faXRlcmFibGVQcm9maWxlKTsKKyAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRl
cmFibGVQcm9maWxlKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAy
ODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxOSBAQCBWZWN0b3I8RnJlcXVlbnRFeGl0
U2l0ZT4gRXhpdFByb2ZpbGU6OmV4CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBFeGl0
UHJvZmlsZTo6aGFzQW55RXhpdHNBdChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyZXF1ZW50RXhpdFNp
dGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9mcmVxdWVudEV4aXRTaXRlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fZnJl
cXVlbnRFeGl0U2l0ZXMtPmF0KGkpLmJ5dGVjb2RlSW5kZXgoKSA9PSBieXRlY29kZUluZGV4KQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBib29sIEV4aXRQcm9maWxlOjpoYXNFeGl0U2l0ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAogewogICAgIGlmICghbV9mcmVx
dWVudEV4aXRTaXRlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdF
eGl0UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYg
KzE4Miw4IEBAIHB1YmxpYzoKICAgICAvLyBHZXQgdGhlIGZyZXF1ZW50IGV4aXQgc2l0ZXMgZm9y
IGEgYnl0ZWNvZGUgaW5kZXguIFRoaXMgaXMgTyhuKSwgYW5kIGlzCiAgICAgLy8gbWVhbnQgdG8g
b25seSBiZSB1c2VkIGZyb20gZGVidWdnaW5nL3Byb2ZpbGluZyBjb2RlLgogICAgIFZlY3RvcjxG
cmVxdWVudEV4aXRTaXRlPiBleGl0U2l0ZXNGb3IoQnl0ZWNvZGVJbmRleCk7CisKKyAgICBib29s
IGhhc0FueUV4aXRzQXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCkg
Y29uc3Q7CiAgICAgCiAgICAgLy8gVGhpcyBpcyBPKG4pIGFuZCBzaG91bGQgYmUgY2FsbGVkIG9u
IGxlc3MtZnJlcXVlbnRseSBleGVjdXRlZCBjb2RlIHBhdGhzCiAgICAgLy8gaW4gdGhlIGNvbXBp
bGVyLiBJdCBzaG91bGQgYmUgc3RyaWN0bHkgY2hlYXBlciB0aGFuIGJ1aWxkaW5nIGEKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgJ
KHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkTWV0YWRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDYgQEAgc3RydWN0IEdl
dEJ5SWRNb2RlTWV0YWRhdGFVbnNldCB7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoR2V0QnlJ
ZE1vZGVNZXRhZGF0YVVuc2V0KSA9PSAxMik7CiAKLXN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRh
QXJyYXlMZW5ndGggewotICAgIEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGU7Ci19Owotc3RhdGlj
X2Fzc2VydChzaXplb2YoR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoKSA9PSAxMik7Ci0K
IHN0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhUHJvdG9Mb2FkIHsKICAgICBTdHJ1Y3R1cmVJRCBz
dHJ1Y3R1cmVJRDsKICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQ7CkBAIC05MCw3ICs4
NSw2IEBAIHVuaW9uIEdldEJ5SWRNb2RlTWV0YWRhdGEgewogICAgIH07CiAgICAgR2V0QnlJZE1v
ZGVNZXRhZGF0YURlZmF1bHQgZGVmYXVsdE1vZGU7CiAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVVu
c2V0IHVuc2V0TW9kZTsKLSAgICBHZXRCeUlkTW9kZU1ldGFkYXRhQXJyYXlMZW5ndGggYXJyYXlM
ZW5ndGhNb2RlOwogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFQcm90b0xvYWQgcHJvdG9Mb2FkTW9k
ZTsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhKSA9PSAxNik7
CkBAIC0xMTMsNyArMTA3LDYgQEAgc3RydWN0IEdldEJ5SWRNb2RlTWV0YWRhdGEgewogICAgIHVu
aW9uIHsKICAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YURlZmF1bHQgZGVmYXVsdE1vZGU7CiAg
ICAgICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCB1bnNldE1vZGU7Ci0gICAgICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCBhcnJheUxlbmd0aE1vZGU7CiAgICAgICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFQcm90b0xvYWQgcHJvdG9Mb2FkTW9kZTsKICAgICB9OwogICAgIEdldEJ5
SWRNb2RlIG1vZGU7CkBAIC0xMzcsNyArMTMwLDYgQEAgaW5saW5lIHZvaWQgR2V0QnlJZE1vZGVN
ZXRhZGF0YTo6c2V0VW5zZQogaW5saW5lIHZvaWQgR2V0QnlJZE1vZGVNZXRhZGF0YTo6c2V0QXJy
YXlMZW5ndGhNb2RlKCkKIHsKICAgICBtb2RlID0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoOwot
ICAgIG5ldyAoJmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpIEFycmF5UHJvZmlsZTsKICAg
ICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUgY2FjaGUgZnJvbSBldmVyIGhhcHBlbmluZy4KICAg
ICBoaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5j
cHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhv
bGRlcjo6Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiBDb21w
cmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6On5Db21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXIoKSB7IH0KIAotdm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIpCit2b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlcjo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIG1f
ZGF0YS0+YXQoaSkuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIG1f
ZGF0YS0+YXQoaSkuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiB9CiAKIExhenlPcGVyYW5k
VmFsdWVQcm9maWxlKiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFk
ZCgKQEAgLTg3LDEzICs4NywxMyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogTGF6eU9wZXJh
bmRWYWx1CiB9CiAKIFNwZWN1bGF0ZWRUeXBlIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2Vy
OjpwcmVkaWN0aW9uKAotICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBjb25z
dCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdAorICAgIGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNv
bnN0CiB7CiAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBnZXRJZlByZXNl
bnQoa2V5KTsKICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgIHJldHVybiBTcGVjTm9uZTsKICAg
ICAKLSAgICByZXR1cm4gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7
CisgICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRhZGF0YVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQsOSArNDQsMTEgQEAgc3RydWN0IERlYWxsb2NUYWJsZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+CiAgICAgc3RhdGljIHZvaWQgd2l0aE9wY29kZVR5cGUoTWV0YWRhdGFUYWJsZSogdGFi
bGUpCiAgICAgewotICAgICAgICB0YWJsZS0+Zm9yRWFjaDxPcD4oW10oYXV0byYgZW50cnkpIHsK
LSAgICAgICAgICAgIGVudHJ5Ln5NZXRhZGF0YSgpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYg
Y29uc3RleHByIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oT3A6Om9wY29kZUlEKSA8IE5VTUJFUl9P
Rl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBKSB7CisgICAgICAgICAgICB0YWJsZS0+Zm9yRWFjaDxP
cD4oW10oYXV0byYgZW50cnkpIHsKKyAgICAgICAgICAgICAgICBlbnRyeS5+TWV0YWRhdGEoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCShyZXZpc2lvbiAyODIx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NiwxOCArNDYsMjIgQEAgY2xhc3MgTWV0YWRhdGFUYWJsZSB7CiBw
dWJsaWM6CiAgICAgfk1ldGFkYXRhVGFibGUoKTsKIAotICAgIEFMV0FZU19JTkxJTkUgSW5zdHJ1
Y3Rpb246Ok1ldGFkYXRhKiBnZXQoT3Bjb2RlSUQgb3Bjb2RlSUQpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTWV0YWRhdGE+CisgICAgQUxXQVlTX0lOTElORSBNZXRhZGF0YSogZ2V0KCkKICAgICB7
CisgICAgICAgIGF1dG8gb3Bjb2RlSUQgPSBNZXRhZGF0YTo6b3Bjb2RlSUQ7CiAgICAgICAgIEFT
U0VSVChvcGNvZGVJRCA8IE5VTUJFUl9PRl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBKTsKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb246Ok1ldGFkYXRhKj4oZ2V0SW1w
bChvcGNvZGVJRCkpOworICAgICAgICB1aW50cHRyX3QgcHRyID0gYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4oZ2V0V2l0aG91dEFsaWduaW5nKG9wY29kZUlEKSk7CisgICAgICAgIHB0ciA9IHJvdW5k
VXBUb011bHRpcGxlT2YoYWxpZ25vZihNZXRhZGF0YSksIHB0cik7CisgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8TWV0YWRhdGEqPihwdHIpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wLCB0eXBlbmFtZSBGdW5jdG9yPgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmb3JFYWNo
KGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiAgICAgewotICAgICAgICBhdXRvKiBtZXRhZGF0YSA9IGJp
dHdpc2VfY2FzdDx0eXBlbmFtZSBPcDo6TWV0YWRhdGEqPihnZXQoT3A6Om9wY29kZUlEKSk7Ci0g
ICAgICAgIGF1dG8qIGVuZCA9IGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBPcDo6TWV0YWRhdGEqPihn
ZXRJbXBsKE9wOjpvcGNvZGVJRCArIDEpKTsKLSAgICAgICAgZm9yICg7IG1ldGFkYXRhICsgMSA8
PSBlbmQ7ICsrbWV0YWRhdGEpCisgICAgICAgIGF1dG8qIG1ldGFkYXRhID0gZ2V0PHR5cGVuYW1l
IE9wOjpNZXRhZGF0YT4oKTsKKyAgICAgICAgYXV0byogZW5kID0gYml0d2lzZV9jYXN0PHR5cGVu
YW1lIE9wOjpNZXRhZGF0YSo+KGdldFdpdGhvdXRBbGlnbmluZyhPcDo6b3Bjb2RlSUQgKyAxKSk7
CisgICAgICAgIGZvciAoOyBtZXRhZGF0YSA8IGVuZDsgKyttZXRhZGF0YSkKICAgICAgICAgICAg
IGZ1bmMoKm1ldGFkYXRhKTsKICAgICB9CiAKQEAgLTExNiw3ICsxMjAsNyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gb2Zmc2V0VGFibGUzMigpW2ldOwogICAgIH0KIAotICAgIEFMV0FZU19J
TkxJTkUgdWludDhfdCogZ2V0SW1wbCh1bnNpZ25lZCBpKQorICAgIEFMV0FZU19JTkxJTkUgdWlu
dDhfdCogZ2V0V2l0aG91dEFsaWduaW5nKHVuc2lnbmVkIGkpCiAgICAgewogICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIGdldE9mZnNldChpKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAyODIx
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdp
ZHRoRm9yTWF4CiAgICAgbWFjcm8oT3BFbnVtZXJhdG9yR2V0QnlWYWwpIFwKICAgICBtYWNybyhP
cEVudW1lcmF0b3JJbkJ5VmFsKSBcCiAgICAgbWFjcm8oT3BFbnVtZXJhdG9ySGFzT3duUHJvcGVy
dHkpIFwKKyAgICBtYWNybyhPcEdldEJ5SWQpIFwKIAogI2RlZmluZSBGT1JfRUFDSF9PUENPREVf
V0lUSF9BUlJBWV9BTExPQ0FUSU9OX1BST0ZJTEUobWFjcm8pIFwKICAgICBtYWNybyhPcE5ld0Fy
cmF5KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwOCw2ICsxMDgsOCBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1w
CiAgICAgZXh0cmFNZW1vcnkgKz0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmJ5dGVTaXpl
KCk7CiAKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChleHRyYU1lbW9yeSk7
CisKKyAgICBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigqdGhpc09iamVjdC0+c3Vic3BhY2UoKSku
YWRkKHRoaXNPYmplY3QpOwogfQogCiBERUZJTkVfVklTSVRfQ0hJTERSRU4oVW5saW5rZWRDb2Rl
QmxvY2spOwpAQCAtMzE2LDQgKzMxOCw0NSBAQCBpbnQgVW5saW5rZWRDb2RlQmxvY2s6Om91dE9m
TGluZUp1bXBPZmZzCiAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVj
b2RlT2Zmc2V0KTsKIH0KIAordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YWxsb2NhdGVTaGFyZWRQ
cm9maWxlcygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fbWV0YWRhdGEtPmlzRmluYWxpemVk
KCkpOworCisgICAgeworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMgPSBu
dW1QYXJhbWV0ZXJzKCk7CisgICAgICAgIGlmIChtX21ldGFkYXRhLT5oYXNNZXRhZGF0YSgpKSB7
CisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxl
cyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7CisgICAgICAgICAgICBGT1JfRUFD
SF9PUENPREVfV0lUSF9WQUxVRV9QUk9GSUxFKENPVU5UKQorI3VuZGVmIENPVU5UCisgICAgICAg
ICAgICBudW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0
ZXJhdG9yT3Blbj4oKSAqIDM7CisgICAgICAgICAgICBudW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0g
bV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yTmV4dD4oKSAqIDM7CisgICAgICAgIH0K
KworICAgICAgICBtX3ZhbHVlUHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+KG51
bWJlck9mVmFsdWVQcm9maWxlcyk7CisgICAgfQorCisgICAgaWYgKG1fbWV0YWRhdGEtPmhhc01l
dGFkYXRhKCkpIHsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheVByb2ZpbGVzID0gMDsK
KworI2RlZmluZSBDT1VOVChfX29wKSBcCisgICAgICAgIG51bWJlck9mQXJyYXlQcm9maWxlcyAr
PSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7CisgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX0FSUkFZX1BST0ZJTEUoQ09VTlQpCisjdW5kZWYgQ09VTlQKKyAgICAgICAgbnVtYmVy
T2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8T3BJdGVyYXRvck5leHQ+
KCk7CisKKyAgICAgICAgbV9hcnJheVByb2ZpbGVzID0gRml4ZWRWZWN0b3I8QXJyYXlQcm9maWxl
PihudW1iZXJPZkFycmF5UHJvZmlsZXMpOworICAgIH0KK30KKwordm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKQoreworICAgIGZvciAoYXV0byYgcHJv
ZmlsZSA6IG1fdmFsdWVQcm9maWxlcykKKyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKKyAgICBmb3IgKGF1dG8mIHByb2ZpbGUgOiBtX2FycmF5UHJvZmlsZXMpCisg
ICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHRoaXMpOworCisgICAgVk06
OlNwYWNlQW5kU2V0OjpzZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcnJheVByb2Zp
bGUuaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5
cGUuaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgpAQCAtMzgsNiArMzksNyBAQAogI2lu
Y2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgi
CiAjaW5jbHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9m
aWxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KQEAgLTMyNCw2ICszMjYsMTcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGUobG9ja2VyLCBzaXRlKTsKICAgICB9CiAKKyAg
ICBib29sIGhhc0FueUV4aXRzQXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2V4aXRQcm9maWxlLmhhc0FueUV4aXRzQXQobG9ja2VyLCBieXRlY29kZUluZGV4KTsKKyAgICB9
CisKKyAgICBib29sIGhhc0FueUV4aXRzQXQoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQor
ICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAg
ICByZXR1cm4gaGFzQW55RXhpdHNBdChsb2NrZXIsIGJ5dGVjb2RlSW5kZXgpOworICAgIH0KKwog
ICAgIERGRzo6RXhpdFByb2ZpbGUmIGV4aXRQcm9maWxlKCkgeyByZXR1cm4gbV9leGl0UHJvZmls
ZTsgfQogI2VuZGlmCiAKQEAgLTMzNCw2ICszNDcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX21ldGFkYXRhLT5zaXplSW5CeXRlcygpOwogICAgIH0KIAorICAgIHZvaWQgYWxsb2NhdGVT
aGFyZWRQcm9maWxlcygpOworCisgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgVW5saW5rZWRDb2RlQmxvY2soVk0mLCBTdHJ1Y3R1cmUqLCBD
b2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPik7CkBAIC00MTksNiArNDM1LDggQEAgcHJpdmF0ZToKICAgICBGaXhlZFZlY3RvcjxJZGVu
dGlmaWVyPiBtX2lkZW50aWZpZXJzOwogICAgIEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtu
b3duPj4gbV9jb25zdGFudFJlZ2lzdGVyczsKICAgICBGaXhlZFZlY3RvcjxTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOworICAgIEZp
eGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOyAvLyBUaGUgZmlyc3QgbnVt
UGFyYW1ldGVycygpIGFyZSBhcmd1bWVudCBwcm9maWxlcy4KKyAgICBGaXhlZFZlY3RvcjxBcnJh
eVByb2ZpbGU+IG1fYXJyYXlQcm9maWxlczsKICAgICB1c2luZyBGdW5jdGlvbkV4cHJlc3Npb25W
ZWN0b3IgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+PjsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlvbkRlY2xzOwogICAg
IEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRXhwcnM7CkBAIC00NTYsNiArNDc0
LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1
Y3Rpb24ub2Zmc2V0KCkpOwogICAgIH0KIAorICAgIFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxl
KHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fdmFsdWVQcm9maWxlc1tpXTsgfQorICAgIEFycmF5UHJv
ZmlsZSYgYXJyYXlQcm9maWxlKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fYXJyYXlQcm9maWxlc1tp
XTsgfQorICAgIHVuc2lnbmVkIG51bVZhbHVlUHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlUHJvZmlsZXMuc2l6ZSgpOyB9CisgICAgdW5zaWduZWQgbnVtQXJyYXlQcm9maWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fYXJyYXlQcm9maWxlcy5zaXplKCk7IH0KKwogcHJpdmF0ZToKICAgICB1
c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9m
ZnNldCwgaW50PjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
ODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDcgQEAgdm9pZCBV
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpegogICAgIHsKICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY29kZUJsb2NrLT5jZWxsTG9jaygpIH07CiAgICAgICAgIG1fY29kZUJsb2Nr
LT5tX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgbV9jb2Rl
QmxvY2stPmFsbG9jYXRlU2hhcmVkUHJvZmlsZXMoKTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1f
bWV0YWRhdGEtPmZpbmFsaXplKCk7CiAKICAgICAgICAgbV9jb2RlQmxvY2stPm1fanVtcFRhcmdl
dHMgPSBXVEZNb3ZlKG1fanVtcFRhcmdldHMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAJKHJldmlz
aW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1l
dGFkYXRhVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMCArNTUsMTAgQEAgdm9pZCBV
bmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKCkKICAgICAgICAgICAgICAgICBidWZmZXJb
aV0gPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7IC8vIFdlIGFsaWduIHdoZW4gd2UgYWNjZXNz
IHRoaXMuCiAgICAgICAgICAgICB1bnNpZ25lZCBhbGlnbm1lbnQgPSBtZXRhZGF0YUFsaWdubWVu
dChzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgICAgICAgICAgb2Zmc2V0ID0gcm91bmRV
cFRvTXVsdGlwbGVPZihhbGlnbm1lbnQsIG9mZnNldCk7CiAgICAgICAgICAgICBBU1NFUlQoYWxp
Z25tZW50IDw9IHNfbWF4TWV0YWRhdGFBbGlnbm1lbnQpOwotICAgICAgICAgICAgYnVmZmVyW2ld
ID0gb2Zmc2V0OwogICAgICAgICAgICAgb2Zmc2V0ICs9IG51bWJlck9mRW50cmllcyAqIG1ldGFk
YXRhU2l6ZShzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgICAgICB9CiAgICAgICAgIGJ1
ZmZlcltzX29mZnNldFRhYmxlRW50cmllcyAtIDFdID0gb2Zmc2V0OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUu
aAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkTWV0YWRhdGFUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBAIHB1
YmxpYzoKICAgICB+VW5saW5rZWRNZXRhZGF0YVRhYmxlKCk7CiAKICAgICB1bnNpZ25lZCBhZGRF
bnRyeShPcGNvZGVJRCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ5dGVjb2RlPgorICAgIHVu
c2lnbmVkIG51bUVudHJpZXMoKTsKIAogICAgIHNpemVfdCBzaXplSW5CeXRlcygpOwogCkBAIC02
NCw2ICs2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5saW5r
ZWRNZXRhZGF0YVRhYmxlKTsKICAgICB9CiAKKyAgICBib29sIGlzRmluYWxpemVkKCkgeyByZXR1
cm4gbV9pc0ZpbmFsaXplZDsgfQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSB7IHJldHVybiBtX2hh
c01ldGFkYXRhOyB9CisKIHByaXZhdGU6CiAgICAgZW51bSBFbXB0eVRhZyB7IEVtcHR5IH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFi
bGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTQgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBVbmxpbmtlZE1ldGFkYXRhVAogICAgIHJldHVybiBwcmVwcm9jZXNzQnVmZmVyKClbb3Bjb2Rl
SURdKys7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZT4KK0FMV0FZU19JTkxJTkUg
dW5zaWduZWQgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpudW1FbnRyaWVzKCkKK3sKKyAgICBjb25z
dGV4cHIgYXV0byBvcGNvZGVJRCA9IEJ5dGVjb2RlOjpvcGNvZGVJRDsKKyAgICBBU1NFUlQoIW1f
aXNGaW5hbGl6ZWQgJiYgb3Bjb2RlSUQgPCBzX29mZnNldFRhYmxlRW50cmllcyAtIDEpOworICAg
IHJldHVybiBwcmVwcm9jZXNzQnVmZmVyKClbb3Bjb2RlSURdOworfQorCiBBTFdBWVNfSU5MSU5F
IHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNpemVJbkJ5dGVzKCkKIHsKICAgICBpZiAo
bV9pc0ZpbmFsaXplZCAmJiAhbV9oYXNNZXRhZGF0YSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNs
dWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUg
IlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC00NSw2ICs0NiwxMSBAQCBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7CiAgICAgCiAgICAgVmFsdWVQcm9maWxlQmFzZSgpCiAgICAgewor
ICAgICAgICBjbGVhckJ1Y2tldHMoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyQnVja2V0cygp
CisgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1
Y2tldHM7ICsraSkKICAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOwogICAgIH0KQEAgLTU1LDE3ICs2MSw2IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIG1fYnVja2V0cyArIG51bWJlck9mQnVja2V0cyArIGk7CiAg
ICAgfQogICAgIAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKHVuc2lnbmVkIGJ1Y2tl
dCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
bV9idWNrZXRzW2J1Y2tldF0pOwotICAgICAgICBpZiAoISF2YWx1ZSkgewotICAgICAgICAgICAg
aWYgKCF2YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICAKICAgICB1
bnNpZ25lZCBudW1iZXJPZlNhbXBsZXMoKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKQEAgLTkyLDkgKzg3LDkgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2Ugewog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIENTdHJpbmcgYnJpZWZEZXNj
cmlwdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikKKyAgICBDU3RyaW5nIGJy
aWVmRGVzY3JpcHRpb24oKQogICAgIHsKLSAgICAgICAgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KGxvY2tlcik7CisgICAgICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgICAgICAK
ICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgICAgICBvdXQucHJpbnQoInByZWRp
Y3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG1fcHJlZGljdGlvbikpOwpAQCAtMTE4LDEwICsxMTMs
MTAgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIC8vIFVwZGF0ZXMgdGhlIHByZWRpY3Rpb24gYW5kIHJldHVybnMgdGhlIG5ldyBvbmUuIE5l
dmVyIGNhbGwgdGhpcyBmcm9tIGFueSB0aHJlYWQKLSAgICAvLyB0aGF0IGlzbid0IGV4ZWN1dGlu
ZyB0aGUgY29kZS4KLSAgICBTcGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKKyAgICBTcGVjdWxhdGVkVHlwZSBjb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24oKQogICAgIHsKKyAgICAgICAgLy8gTXVsdGlwbGUgdGhyZWFkcyBjb3Vs
ZCBiZSBjYWxsaW5nIGludG8gdGhpcyBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICAvLyBUaGUg
aW1wb3J0IHBhcnQgaXMgdGhhdCB3ZSBkb24ndCBlbmQgdXAgY29ycnVwdGluZyBhbnkgdmFsdWVz
LgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7
ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1
Y2tldHNbaV0pOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKQEAgLTE1Niw2ICsxNTEsNyBAQCBz
dHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiAKIHN0cnVjdCBWYWx1ZVBy
b2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7CiAg
ICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+
KCkgeyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpcnN0QnVja2V0KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKFZhbHVlUHJvZmlsZSwgbV9idWNrZXRzWzBdKTsgfQogfTsKIAog
c3RydWN0IFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlciA6IHB1YmxpYyBWYWx1ZVByb2Zp
bGUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAko
cmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCi1BcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwg
QXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWFrZVNhZmUpCitBcnJheU1vZGUgQXJyYXlNb2Rl
Ojpmcm9tT2JzZXJ2ZWQoR3JhcGgmIGdyYXBoLCBjb25zdCBDb2RlT3JpZ2luJiBvcmlnaW4sIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWFrZVNhZmUp
CiB7CisgICAgaWYgKHByb2ZpbGUtPm9ic2VydmVkRGlmZmVyZW50R2xvYmFsT2JqZWN0KCkgJiYg
Z3JhcGguaGFzQW55RXhpdHNBdChvcmlnaW4pKSB7CisgICAgICAgIC8vIFRoaXMgY291bGQgYmUg
YW4gb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJlLCBidXQgZnJvbSBhIGRpZmZlcmVudAorICAgICAg
ICAvLyBnbG9iYWwgb2JqZWN0IHRoYW4gdGhlIGxleGljYWwgZ2xvYmFsIG9iamVjdC4gU28gd2Ug
Y29uc2VydmF0aXZlbHkKKyAgICAgICAgLy8gc2F5IGl0IGlzIG5vdCBhbiBvcmlnaW5hbCBhcnJh
eSBzdHJ1Y3R1cmUuCisgICAgICAgIHByb2ZpbGUtPnNldERvZXNOb3RVc2VPcmlnaW5hbEFycmF5
U3RydWN0dXJlcygpOworICAgIH0KKwogICAgIEFycmF5OjpDbGFzcyBub25BcnJheTsKLSAgICBp
ZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKGxvY2tlcikpCisgICAgaWYg
KHByb2ZpbGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpKQogICAgICAgICBub25BcnJh
eSA9IEFycmF5OjpPcmlnaW5hbE5vbkFycmF5OwogICAgIGVsc2UKICAgICAgICAgbm9uQXJyYXkg
PSBBcnJheTo6Tm9uQXJyYXk7CkBAIC02MywyNyArNzAsMjcgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb252ZXJ0
cyA9IEFycmF5OjpBc0lzOwogCi0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJh
eSwgY29udmVydHMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2Fm
ZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgaXNBcnJheSwgY29udmVydHMsIGFj
dGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIH07CiAKLSAgICBBcnJh
eU1vZGVzIG9ic2VydmVkID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7Cisg
ICAgQXJyYXlNb2RlcyBvYnNlcnZlZCA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpOwog
ICAgIHN3aXRjaCAob2JzZXJ2ZWQpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlVucHJvZmlsZWQpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdU
eXBlZEFycmF5cyhOb25BcnJheSk6Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRl
ICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMobG9ja2VyKSkKKyAgICAg
ICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdElu
ZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2Vs
ZWN0VXNpbmdBcmd1bWVudHMsIG5vbkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpD
b252ZXJ0LCBhY3Rpb24pOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RV
c2luZ1ByZWRpY3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJv
ZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucywgbm9uQXJyYXksIGFjdGlvbikud2l0aFNw
ZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0Fy
cmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFVuZGVjaWRlZCk6CiAgICAgICAg
IGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlKQogICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6U2VsZWN0VXNpbmdBcmd1bWVudHMsIEFycmF5OjpBcnJheSwgQXJyYXk6Ok91dE9m
Qm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVuZGVjaWRlZCwgQXJyYXk6OkFycmF5
LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHBy
b2ZpbGUsIG1ha2VTYWZlKTsKICAgICAgICAgCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMo
QXJyYXlXaXRoVW5kZWNpZGVkKToKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUg
JiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQorICAgICAg
ICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxl
Y3RVc2luZ0FyZ3VtZW50cywgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpPdXRPZkJvdW5k
cywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJy
YXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9uRnJvbVBy
b2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1v
ZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIGFjdGlvbikud2l0aFNwZWN1bGF0aW9u
RnJvbVByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogCiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEludDMyKToKICAgICBjYXNlIGFzQXJyYXlN
b2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoSW50MzIpOgpAQCAtMTEzLDUwICsxMjAs
NTAgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBy
ZXR1cm4gaGFuZGxlQ29udGlndW91c01vZGVzKEFycmF5OjpDb250aWd1b3VzLCBvYnNlcnZlZCk7
CiAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRo
QXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9y
YWdlLCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5
U3RvcmFnZSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2Zp
bGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMo
Tm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJ
Z25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgot
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBub25B
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBt
YWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0
b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFy
cmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFy
cmF5U3RvcmFnZSwgQXJyYXk6OkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmls
ZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndp
dGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9y
aW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBh
c0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBh
c0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdl
LCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93
UHV0QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQ
cm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5n
VHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9y
aW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFy
cmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3Np
Ymx5QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VT
YWZlKTsKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlz
KEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdu
b3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFz
QXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFn
ZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2Us
IEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShs
b2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJh
eTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDhB
cnJheU1vZGU6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9u
QXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwg
bWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQ4QXJyYXksIG5v
bkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2Fm
ZSk7CiAgICAgY2FzZSBJbnQxNkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6SW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2Rl
KEFycmF5OjpJbnQxNkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFBy
b2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50MzJBcnJheU1vZGU6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6
QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6SW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNl
IFVpbnQ4QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVaW50OEFy
cmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBw
cm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4
QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheU1vZGU6Ci0gICAgICAgIHJl
dHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7Cisg
ICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwog
ICAgIGNhc2UgVWludDE2QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5
OjpVaW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFy
cmF5OjpVaW50MTZBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVpbnQzMkFycmF5TW9kZToKLSAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6
QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDMyQXJyYXksIG5vbkFycmF5LCBBcnJh
eTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2Fz
ZSBGbG9hdDMyQXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9h
dDMyQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2Nr
ZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6
RmxvYXQzMkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUo
cHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgRmxvYXQ2NEFycmF5TW9kZToKLSAgICAgICAg
cmV0dXJuIEFycmF5TW9kZShBcnJheTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFz
SXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0NjRBcnJheSwgbm9uQXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNl
IEJpZ0ludDY0QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpCaWdJ
bnQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9j
a2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6
OkJpZ0ludDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmls
ZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBCaWdVaW50NjRBcnJheU1vZGU6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJheSwgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7
CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ1VpbnQ2NEFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwog
CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIG11bHRpcGxlIFR5cGVk
QXJyYXkgdHlwZXMsIG9yIGEgVHlwZWRBcnJheSBhbmQgbm9uLXR5cGVkIGFycmF5LCBpdCBkb2Vz
bid0IG1ha2Ugc2Vuc2UgdG8gdHJ5IHRvIGNvbnZlcnQgdGhlIG9iamVjdCBzaW5jZSB5b3UgY2Fu
J3QgY29udmVydCB0eXBlZCBhcnJheXMuCiAgICAgICAgIGlmIChvYnNlcnZlZCAmIEFMTF9UWVBF
RF9BUlJBWV9NT0RFUykKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkdlbmVy
aWMsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHBy
b2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6Okdl
bmVyaWMsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAKLSAgICAgICAgaWYgKChvYnNlcnZlZCAmIGFzQXJyYXlNb2Rlc0lnbm9y
aW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpKSAmJiBwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVk
QWNjZXNzZXMobG9ja2VyKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNl
bGVjdFVzaW5nUHJlZGljdGlvbnMpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwg
cHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICBpZiAoKG9ic2VydmVkICYgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheSkpICYmIHByb2ZpbGUtPm1heUludGVyY2VwdElu
ZGV4ZWRBY2Nlc3NlcygpKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2Vs
ZWN0VXNpbmdQcmVkaWN0aW9ucykud2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUocHJvZmlsZSwg
bWFrZVNhZmUpOwogICAgICAgICAKICAgICAgICAgQXJyYXk6OlR5cGUgdHlwZTsKICAgICAgICAg
QXJyYXk6OkNsYXNzIGFycmF5Q2xhc3M7CkBAIC0xODMsNyArMTkwLDcgQEAgQXJyYXlNb2RlIEFy
cmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBh
cnJheUNsYXNzID0gQXJyYXk6OlBvc3NpYmx5QXJyYXk7CiAgICAgICAgIAotICAgICAgICByZXR1
cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndp
dGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJy
YXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MsIEFycmF5OjpDb252ZXJ0LCBhY3Rpb24pLndpdGhQcm9m
aWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcg
KzE3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZSh3b3JkKTsKICAgICB9
CiAgICAgCi0gICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7
CisgICAgc3RhdGljIEFycmF5TW9kZSBmcm9tT2JzZXJ2ZWQoR3JhcGgmLCBjb25zdCBDb2RlT3Jp
Z2luJiwgQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CiAgICAg
CiAgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbihBcnJheTo6U3BlY3VsYXRpb24gc3BlY3Vs
YXRpb24pIGNvbnN0CiAgICAgewpAQCAtMTkwLDEzICsxOTAsMTMgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKHR5cGUoKSwgYXJyYXlDbGFzcywgc3BlY3VsYXRpb24oKSwgY29u
dmVyc2lvbigpLCBhY3Rpb24oKSk7CiAgICAgfQogICAgIAotICAgIEFycmF5TW9kZSB3aXRoU3Bl
Y3VsYXRpb25Gcm9tUHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQXJy
YXlQcm9maWxlKiBwcm9maWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIEFycmF5TW9kZSB3
aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFr
ZVNhZmUpIGNvbnN0CiAgICAgewogICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxh
dGlvbjsKIAogICAgICAgICBpZiAobWFrZVNhZmUpCiAgICAgICAgICAgICBteVNwZWN1bGF0aW9u
ID0gQXJyYXk6Ok91dE9mQm91bmRzOwotICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5tYXlTdG9y
ZVRvSG9sZShsb2NrZXIpKQorICAgICAgICBlbHNlIGlmIChwcm9maWxlLT5tYXlTdG9yZVRvSG9s
ZSgpKQogICAgICAgICAgICAgbXlTcGVjdWxhdGlvbiA9IEFycmF5OjpUb0hvbGU7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6SW5Cb3VuZHM7CkBAIC0y
MDQsMjcgKzIwNCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHdpdGhTcGVjdWxhdGlvbiht
eVNwZWN1bGF0aW9uKTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlNb2RlIHdpdGhQcm9maWxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wgbWFrZVNhZmUpIGNvbnN0Ci0gICAgewotICAgICAgICBBcnJheTo6Q2xhc3MgbXlBcnJheUNs
YXNzOwotCi0gICAgICAgIGlmIChpc0pTQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKHByb2Zp
bGUtPnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhsb2NrZXIpICYmIGJlbmVmaXRzRnJvbU9y
aWdpbmFsQXJyYXkoKSkgewotICAgICAgICAgICAgICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9
IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rlcyhsb2NrZXIpOwotICAgICAgICAgICAgICAgIGlm
IChoYXNTZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1vZGVzKSAmJiAhaGFzU2VlbldyaXRhYmxl
QXJyYXkoYXJyYXlNb2RlcykpCi0gICAgICAgICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFy
cmF5OjpPcmlnaW5hbENvcHlPbldyaXRlQXJyYXk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
IWhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5TW9kZXMpICYmIGhhc1NlZW5Xcml0YWJsZUFy
cmF5KGFycmF5TW9kZXMpKQotICAgICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJh
eTo6T3JpZ2luYWxBcnJheTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpBcnJheTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBhcnJheUNsYXNzKCk7Ci0gICAgICAgIAotICAg
ICAgICByZXR1cm4gd2l0aEFycmF5Q2xhc3MobXlBcnJheUNsYXNzKS53aXRoU3BlY3VsYXRpb25G
cm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKLSAgICB9Ci0gICAgCiAgICAg
QXJyYXlNb2RlIHdpdGhUeXBlKEFycmF5OjpUeXBlIHR5cGUpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKHR5cGUsIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwgY29u
dmVyc2lvbigpLCBhY3Rpb24oKSk7CkBAIC01MzgsNiArNTE3LDI4IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICB1LmFzV29yZCA9IHdvcmQ7CiAgICAgfQorCisgICAgQXJyYXlNb2RlIHdpdGhQ
cm9maWxlKEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKKyAgICB7
CisgICAgICAgIEFycmF5OjpDbGFzcyBteUFycmF5Q2xhc3M7CisKKyAgICAgICAgaWYgKGlzSlNB
cnJheSgpKSB7CisgICAgICAgICAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmVzKCkgJiYgYmVuZWZpdHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7CisgICAgICAgICAgICAg
ICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKCk7
CisgICAgICAgICAgICAgICAgaWYgKGhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KGFycmF5TW9kZXMp
ICYmICFoYXNTZWVuV3JpdGFibGVBcnJheShhcnJheU1vZGVzKSkKKyAgICAgICAgICAgICAgICAg
ICAgbXlBcnJheUNsYXNzID0gQXJyYXk6Ok9yaWdpbmFsQ29weU9uV3JpdGVBcnJheTsKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmICghaGFzU2VlbkNvcHlPbldyaXRlQXJyYXkoYXJyYXlNb2Rlcykg
JiYgaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCisgICAgICAgICAgICAgICAgICAg
IG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbEFycmF5OworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6OkFycmF5OworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6OkFy
cmF5OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IGFycmF5Q2xh
c3MoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFzcyhteUFycmF5Q2xh
c3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICB9
CisgICAgCiAgICAgCiAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzV2l0aEluZGV4aW5nU2hhcGVz
KEluZGV4aW5nVHlwZSBzaGFwZSkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjgyMTgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg5NSwxMSArODk1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGF1
dG8gZ2V0VmFsdWVQcm9maWxlUHJlZGljdGlvbkZyb21Gb3JDb2RlQmxvY2tBbmRCeXRlY29kZU9m
ZnNldCA9IFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb247
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IGNvZGVC
bG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgobG9ja2VyLCBjb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9u
Rm9yQnl0ZWNvZGVJbmRleChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgICAg
ICBhdXRvKiBmdXp6ZXJBZ2VudCA9IG1fdm0tPmZ1enplckFnZW50KCk7CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoZnV6emVyQWdlbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmdXp6ZXJB
Z2VudC0+Z2V0UHJlZGljdGlvbihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIHByZWRpY3Rpb24pICYg
U3BlY0J5dGVjb2RlVG9wOwpAQCAtOTgzLDEwICs5NzksOSBAQCBwcml2YXRlOgogCiAgICAgQXJy
YXlNb2RlIGdldEFycmF5TW9kZShBcnJheVByb2ZpbGUmIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24g
YWN0aW9uKQogICAgIHsKLSAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIHByb2ZpbGUuY29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrKTsKLSAgICAgICAgYm9vbCBtYWtlU2FmZSA9IHByb2ZpbGUub3V0T2ZCb3VuZHMobG9j
a2VyKTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgJnBy
b2ZpbGUsIGFjdGlvbiwgbWFrZVNhZmUpOworICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOworICAgICAgICBi
b29sIG1ha2VTYWZlID0gcHJvZmlsZS5vdXRPZkJvdW5kcygpOworICAgICAgICByZXR1cm4gQXJy
YXlNb2RlOjpmcm9tT2JzZXJ2ZWQobV9ncmFwaCwgY3VycmVudENvZGVPcmlnaW4oKSwgJnByb2Zp
bGUsIGFjdGlvbiwgbWFrZVNhZmUpOwogICAgIH0KIAogICAgIE5vZGUqIG1ha2VTYWZlKE5vZGUq
IG5vZGUpCkBAIC0yMDU4LDkgKzIwNTMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVW
YXJhcmdzSW5saW5pCiAgICAgICAgICAgICAvLyBhcmd1bWVudHMgcmVjZWl2ZWQgaW5zaWRlIHRo
ZSBjYWxsZWUuIEJ1dCB0aGF0IHByb2JhYmx5IHdvbid0IG1hdHRlciBmb3IgbW9zdAogICAgICAg
ICAgICAgLy8gY2FsbHMuCiAgICAgICAgICAgICBpZiAoY29kZUJsb2NrICYmIGFyZ3VtZW50IDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkgewotICAg
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2sp
OwogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9IGNvZGVCbG9jay0+dmFs
dWVQcm9maWxlRm9yQXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOworICAg
ICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2Rl
KiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgobnVtU2V0QXJndW1lbnRzID49IG1hbmRhdG9yeU1p
bmltdW0gPyBTZXRBcmd1bWVudE1heWJlIDogU2V0QXJndW1lbnREZWZpbml0ZWx5LCBPcEluZm8o
dmFyaWFibGUpKTsKQEAgLTYzMDUsNyArNjI5OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGlmIChzaG91bGRDb21waWxlQXNHZXRCeUlk
KQogICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoYnl0ZWNvZGUubV9kc3QsIHByZWRpY3Rp
b24sIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkLCBuZXh0T3Bjb2RlSW5kZXgoKSk7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAg
ICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCpieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGNvbnNpZGVyIG1ha2luZyB0aGlzIG5vdCB2
YXJhcmcsIHNpbmNlIGl0IG9ubHkgdXNlcyB0aHJlZSBjaGlsZAogICAgICAgICAgICAgICAgIC8v
IHNsb3RzLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQxOTIKQEAgLTcwNzUsMTEgKzcwNjksOSBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBX
VEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKIAogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX2xvY2spOwotCiAgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAo
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyJiBwcm9maWxlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKLSAgICAg
ICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUuY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CkBAIC03NDMxLDcgKzc0MjMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogaXNE
b25lQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAg
QmFzaWNCbG9jayogZG9Mb2FkQmxvY2sgPSBhbGxvY2F0ZVVudGFyZ2V0YWJsZUJsb2NrKCk7CiAK
LSAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFk
YXRhLm1faXRlcmFibGVQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgQXJy
YXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9pdGVyYWJsZVByb2Zp
bGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBhdXRvIHByZWRpY3Rpb24gPSBnZXRQ
cmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleC5vZmZz
ZXQoKSwgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlKSk7CiAKICAgICAgICAgICAgICAgICB7CkBA
IC04MzI2LDcgKzgzMTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghY29tcGlsZWRBc0luQnlJZCkg
ewotICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwor
ICAgICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAg
ICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSW5CeVZhbCwgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGJhc2UsIHByb3BlcnR5KSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV92YWwpOwpAQCAtODQxMCw3ICs4NDAy
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBj
YXNlIG9wX2VudW1lcmF0b3JfbmV4dDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yTmV4dD4oKTsKICAgICAgICAgICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAg
IEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2Zp
bGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRB
cnJheU1vZGUoKm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAgICBOb2Rl
KiBpbmRleCA9IGdldChieXRlY29kZS5tX2luZGV4KTsKICAgICAgICAgICAgIE5vZGUqIGVudW1l
cmF0b3IgPSBnZXQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKTsKQEAgLTg0NDIsNyArODQzNCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBv
cF9lbnVtZXJhdG9yX2dldF9ieV92YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckdldEJ5VmFsPigpOwogICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uID0gZ2V0UHJlZGljdGlvbldpdGhv
dXRPU1JFeGl0KCk7CiAKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9i
YXNlKTsKQEAgLTg1MDYsNyArODQ5OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9lbnVtZXJhdG9yX2luX2J5X3ZhbDogewogICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJh
dG9ySW5CeVZhbD4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRB
cnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAg
ICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChi
eXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29k
ZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODUyMSw3ICs4NTEzLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfaGFz
X293bl9wcm9wZXJ0eTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCk7CiAgICAgICAgICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAg
ICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9m
aWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0
QXJyYXlNb2RlKCptZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogCiAgICAg
ICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9iYXNlKSk7CiAgICAgICAgICAg
ICBhZGRWYXJBcmdDaGlsZChnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eU5hbWUpKTsKQEAgLTg4ODEs
NyArODg3Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGUKICAg
ICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRCeUlkKSB7Ci0gICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2Fy
cmF5UHJvZmlsZSwgQXJyYXk6OldyaXRlKTsKKyAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmls
ZSwgQXJyYXk6OldyaXRlKTsKIAogICAgICAgICBhZGRWYXJBcmdDaGlsZChiYXNlKTsKICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDQy
LDkgKzQwNDIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0QXJy
YXlQcm9maWxlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogICAgICAg
ICBBcnJheU1vZGUgYXJyYXlNb2RlID0gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRp
Y3Rpb25zLCBBcnJheTo6UmVhZCk7CiAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpIHsKLSAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsK
LSAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
ciwgcHJvZmlsZWRCbG9jayk7Ci0gICAgICAgICAgICBhcnJheU1vZGUgPSBBcnJheU1vZGU6OmZy
b21PYnNlcnZlZChsb2NrZXIsIGFycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQsIGZhbHNlKTsKKyAg
ICAgICAgICAgIGFycmF5UHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKHByb2ZpbGVk
QmxvY2spOworICAgICAgICAgICAgYXJyYXlNb2RlID0gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQo
bV9ncmFwaCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBhcnJheVByb2ZpbGUsIEFycmF5OjpSZWFk
LCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLnR5cGUoKSA9PSBBcnJheTo6VW5w
cm9maWxlZCkgewogICAgICAgICAgICAgICAgIC8vIEZvciBub3JtYWwgYXJyYXkgb3BlcmF0aW9u
cywgaXQgbWFrZXMgc2Vuc2UgdG8gdHJlYXQgVW5wcm9maWxlZAogICAgICAgICAgICAgICAgIC8v
IGFjY2Vzc2VzIGFzIEZvcmNlRXhpdCBhbmQgZ2V0IG1vcmUgZGF0YSByYXRoZXIgdGhhbiB1c2lu
ZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjgyMTgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MjAsNyArNTIwLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBoYXNF
eGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4aXRLaW5kKTsKICAgICB9Ci0gICAgCisK
KyAgICBib29sIGhhc0FueUV4aXRzQXQoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAg
ICB7CisgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+dW5s
aW5rZWRDb2RlQmxvY2soKS0+aGFzQW55RXhpdHNBdChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgo
KSk7CisgICAgfQorCiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbnROb2RlLCBOb2RlKiBvcGVyYW5kTm9k
ZSk7CiAgICAgCiAgICAgQmxvY2tJbmRleCBudW1CbG9ja3MoKSBjb25zdCB7IHJldHVybiBtX2Js
b2Nrcy5zaXplKCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDI4MjE4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzM3LDI2ICszMzcsMjkgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJh
bWVzKENDYWxsSGVscGVycwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVy
KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gp
CitzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCiB7Ci0g
ICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQu
YmFycmllckJyYW5jaFdpdGhvdXRGZW5jZShvd25lcik7CisgICAgYXV0byBlbWl0QmFycmllciA9
IFsmXSAoYXV0byogY2VsbCkgeworICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY2VsbCksIG93bmVyKTsKKyAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1w
IG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaFdpdGhvdXRGZW5j
ZShvd25lcik7CisKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bk9TUldyaXRlQmFycmllcik+KCZ2bSwgb3duZXIpOworICAgICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25PU1JXcml0ZUJhcnJp
ZXIpKSwgc2NyYXRjaCk7CisgICAgICAgIGppdC5jYWxsKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRh
Zyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT1NSV3JpdGVC
YXJyaWVyKT4oJnZtLCBvd25lcik7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
LSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaCk7Ci0g
ICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgb3duZXJJc1Jl
bWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOworICAgIH07CiAKLSAgICBvd25lcklzUmVtZW1i
ZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CisgICAgZW1pdEJhcnJpZXIoY29kZUJsb2NrKTsKKyAg
ICBlbWl0QmFycmllcihjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpOwogfQogCiB2b2lk
IGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBP
U1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICBqaXQubWVtb3J5RmVuY2UoKTsKICAgICAKLSAgICBq
aXQubW92ZSgKLSAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAotICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5iYXNlbGluZUFsdGVybmF0aXZlKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOwotICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIG9zcldyaXRlQmFycmllcih2bSwg
aml0LCBqaXQuY29kZUJsb2NrKCktPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKIAogICAgIC8vIFdlIGJhcnJpZXIgYWxs
IGlubGluZWQgZnJhbWVzIC0tIGFuZCBub3QganVzdCB0aGUgY3VycmVudCBpbmxpbmUgc3RhY2sg
LS0KICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hpY2ggaW5saW5lZCBmdW5jdGlvbiBv
d25zIHRoZSB2YWx1ZSBwcm9maWxlIHRoYXQKQEAgLTM2NywxMiArMzcwLDggQEAgdm9pZCBhZGp1
c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbAogICAgIC8vIHRoZSB2YWx1ZSBwcm9maWxl
LgogICAgIElubGluZUNhbGxGcmFtZVNldCogaW5saW5lQ2FsbEZyYW1lcyA9IGppdC5jb2RlQmxv
Y2soKS0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+aW5saW5lQ2FsbEZyYW1lcy5nZXQoKTsKICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lcykgewotICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSog
aW5saW5lQ2FsbEZyYW1lIDogKmlubGluZUNhbGxGcmFtZXMpIHsKLSAgICAgICAgICAgIGppdC5t
b3ZlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigKLSAg
ICAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQo
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgICAgICBvc3JXcml0ZUJhcnJpZXIo
dm0sIGppdCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAg
ICAgICAgfQorICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDog
KmlubGluZUNhbGxGcmFtZXMpCisgICAgICAgICAgICBvc3JXcml0ZUJhcnJpZXIodm0sIGppdCwg
aW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICB9CiAKICAgICBhdXRvKiBleGl0SW5s
aW5lQ2FsbEZyYW1lID0gZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDE2ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoY29k
ZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSA+PSAxKTsKICAgICAgICAgewotICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7Ci0gICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50
cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQogICAgICAgICAgICAgLy8g
b3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIg
cHJlZGljdGlvbnMuCiAgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fcm9v
dFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogCiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9j
aygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJv
ZmlsZSYgcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQo
YXJnKTsKLSAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCktPnByZWRpY3QoCi0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcikpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHJldmlzaW9u
IDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTIgKzYyLDkgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6
Oml0ZXJhdGUoY29uc3QgQWJzdHJhYwogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQg
Q29kZUJsb2NrU2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAgIFsmXSAo
YXV0byYgc3BhY2VBbmRTZXQpIHsKLSAgICAgICAgICAgIHNwYWNlQW5kU2V0LnNwYWNlLmZvckVh
Y2hMaXZlQ2VsbCgKLSAgICAgICAgICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2Vs
bDo6S2luZCkgewotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKGpzQ2FzdDxDb2RlQmxvY2sq
PihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSkpOwotICAgICAgICAgICAgICAgIH0pOworICAg
IHZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKKyAgICAgICAgWyZdIChI
ZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoanND
YXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKSk7CiAgICAgICAgIH0p
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjgy
MTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4MywxMCArNTgzLDEwIEBAIHZvaWQgSGVhcDo6YWRkUmVmZXJlbmNlKEpTQ2VsbCog
Y2VsbCwgQXIKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCB0eXBlbmFt
ZSBDZWxsU2V0Pgotdm9pZCBIZWFwOjpmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzKENlbGxTZXQmIGNlbGxTZXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgdHlwZW5h
bWUgQ2VsbFNldE9ySXNvU3Vic3BhY2U+Cit2b2lkIEhlYXA6OmZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnMoQ2VsbFNldE9ySXNvU3Vic3BhY2UmIHNldE9yU3Vic3BhY2UpCiB7
Ci0gICAgY2VsbFNldC5mb3JFYWNoTWFya2VkQ2VsbCgKKyAgICBzZXRPclN1YnNwYWNlLmZvckVh
Y2hNYXJrZWRDZWxsKAogICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2lu
ZCkgewogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q2VsbFR5cGUqPihjZWxsKS0+ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkodm0oKSk7CiAgICAgICAgIH0pOwpAQCAtNTk4LDEwICs1OTgsMTIgQEAg
dm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZQogICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRhYmxlPih2bSgpLmZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPih2bSgpLnN5bWJvbFRhYmxlU3BhY2UpOwogICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4odm0oKS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8g
V2UgcnVuIHRoaXMgYmVmb3JlIENvZGVCbG9jaydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNp
bmNlIENvZGVCbG9jayBsb29rcyBhdCB0aGUgb3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBD
b2RlQmxvY2sgaW4gaXRzIGZpbmFsaXplVW5jb25kaXRpb25hbGx5LgotICAgIHZtKCkuZm9yRWFj
aENvZGVCbG9ja1NwYWNlKAotICAgICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7Ci0gICAgICAgICAg
ICB0aGlzLT5maW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4o
c3BhY2Uuc2V0KTsKLSAgICAgICAgfSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxDb2RlQmxvY2s+KHZtKCkuY29kZUJsb2NrU3BhY2Uuc2V0KTsKKyAgICB2bSgp
LmZvckVhY2hVbmxpbmtlZENvZGVCbG9ja1NwYWNlKFsmXSAoVk06OlNwYWNlQW5kU2V0KiBzcGFj
ZUFuZFNldCkgeworICAgICAgICBpZiAoIXNwYWNlQW5kU2V0KQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2Vk
Q29kZUJsb2NrPihzcGFjZUFuZFNldC0+c2V0KTsKKyAgICB9KTsKICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPih2bSgpLnN0cnVjdHVy
ZVJhcmVEYXRhU3BhY2UpOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKCkudW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQpOwogICAgIGlmICh2bSgpLm1fd2Vha1NldFNwYWNlKQpAQCAtOTczLDcg
Kzk3NSw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKQogICAgIHZt
KCkuZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uu
c3BhY2Uuc3dlZXAoKTsgfSk7CiAgICAgLy8gU3dlZXBpbmcgbXVzdCBvY2N1ciBiZWZvcmUgZGVs
ZXRpbmcgc3R1YnMsIG90aGVyd2lzZSB0aGUgc3R1YnMgbWlnaHQgc3RpbGwgdGhpbmsgdGhleSdy
ZSBhbGl2ZSBhcyB0aGV5IGdldCBkZWxldGVkLgogICAgIC8vIEFuZCBDb2RlQmxvY2sgZGVzdHJ1
Y3RvciBpcyBhc3N1bWluZyB0aGF0IENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZCBiZWZvcmUgVW5s
aW5rZWRDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQuCi0gICAgdm0oKS5mb3JFYWNoQ29kZUJsb2Nr
U3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVwKCk7IH0pOworICAgIHZt
KCkuY29kZUJsb2NrU3BhY2Uuc3BhY2Uuc3dlZXAoKTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+
ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7CiB9CiAKQEAgLTE0ODYsNiAr
MTQ4OCw3IEBAIE5FVkVSX0lOTElORSBib29sIEhlYXA6OnJ1bkVuZFBoYXNlKEdDQ28KICAgICBp
dGVyYXRlRXhlY3V0aW5nQW5kQ29tcGlsaW5nQ29kZUJsb2Nrcyh2aXNpdG9yLAogICAgICAgICBb
Jl0gKENvZGVCbG9jayogY29kZUJsb2NrKSB7CiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIoY29k
ZUJsb2NrKTsKKyAgICAgICAgICAgIHdyaXRlQmFycmllcihjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCkpOwogICAgICAgICB9KTsKIAogICAgIHVwZGF0ZU9iamVjdENvdW50cygpOwpAQCAt
MTUyMyw2ICsxNTI2LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuRW5kUGhhc2UoR0ND
bwogICAgIG1fY29kZUJsb2Nrcy0+aXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZygKICAgICAgICAg
WyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgewogICAgICAgICAgICAgd3JpdGVCYXJyaWVyKGNv
ZGVCbG9jayk7CisgICAgICAgICAgICB3cml0ZUJhcnJpZXIoY29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpKTsKICAgICAgICAgfSk7CiAgICAgbV9jb2RlQmxvY2tzLT5jbGVhckN1cnJlbnRs
eUV4ZWN1dGluZygpOwogICAgICAgICAKQEAgLTI4ODYsMTAgKzI4OTAsMTQgQEAgdm9pZCBIZWFw
OjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29w
ZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkNvZGVCbG9ja3MpOwogICAgICAg
ICAgICAgaXRlcmF0ZUV4ZWN1dGluZ0FuZENvbXBpbGluZ0NvZGVCbG9ja3NXaXRob3V0SG9sZGlu
Z0xvY2tzKHZpc2l0b3IsCiAgICAgICAgICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9j
aykgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGhhbmRsZSA9IFsmXSAoYXV0byogY2VsbCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQoY2VsbCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjZWxsLT5jZWxsU3RhdGUoKSA9PSBDZWxsU3Rh
dGU6OlBvc3NpYmx5QmxhY2spCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci52
aXNpdEFzQ29uc3RyYWludChjZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAg
ICAgICAgICAgICAgLy8gVmlzaXQgdGhlIENvZGVCbG9jayBhcyBhIGNvbnN0cmFpbnQgb25seSBp
ZiBpdCdzIGJsYWNrLgotICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRvci5pc01hcmtlZChj
b2RlQmxvY2spCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBjb2RlQmxvY2stPmNlbGxTdGF0
ZSgpID09IENlbGxTdGF0ZTo6UG9zc2libHlCbGFjaykKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZpc2l0b3IudmlzaXRBc0NvbnN0cmFpbnQoY29kZUJsb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlKGNvZGVCbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZShjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KSksCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpTZWxkb21HcmV5ZWQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsNyArMzAyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9m
aWxlZE9wY29kZSguLi4pOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3By
b2ZpbGUpLCBWYWx1ZVByb2ZpbGU+Ojp2YWx1ZSwgdm9pZD4KKyAgICAgICAgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1
ZVByb2ZpbGUqPjo6dmFsdWUsIHZvaWQ+CiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJ
ZlByb2ZpbGVkT3Bjb2RlKE9wIGJ5dGVjb2RlKTsKIAogICAgICAgICB2b2lkIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxHUFIsIEFycmF5UHJvZmlsZSosIFJl
Z2lzdGVySUQgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw3ICszMTIsNyBAQCBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotaW5saW5lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPGRlY2x0eXBlKE9wOjpNZXRh
ZGF0YTo6bV9wcm9maWxlKSwgVmFsdWVQcm9maWxlPjo6dmFsdWUsIHZvaWQ+IEpJVDo6ZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpCitpbmxpbmUgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2Zp
bGUpLCBWYWx1ZVByb2ZpbGUqPjo6dmFsdWUsIHZvaWQ+IEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNvZGUpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CShyZXZpc2lvbiAyODIxODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk0LDYgKzExOTQsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvCiAgICAgICAgIGVtaXRJbml0UmVnaXN0ZXIodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaikpOwogCiAgICAgZW1pdFdyaXRlQmFycmllcihtX2NvZGVC
bG9jayk7CisgICAgZW1pdFdyaXRlQmFycmllcihtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKSk7CiAKICAgICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwogI2Vsc2UKQEAgLTEy
NDUsMTcgKzEyNDYsMjkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SQogICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAKICAgICAvLyBlbWl0V3JpdGVCYXJyaWVyKG1f
Y29kZUJsb2NrKS4KKyAgICAvLyBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpKS4KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIGFyZ3VtZW50R1BSMSk7Ci0gICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9y
SW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2godm0sIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIy
KTsKLQogICAgIGppdC5tb3ZlKGNhbkJlT3B0aW1pemVkR1BSLCBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7IC8vIHNhdmUuCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOwotICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgQ2FsbCBvcGVyYXRpb25Xcml0ZUJhcnJpZXJD
YWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLQorICAgIENhbGwgb3BlcmF0aW9uV3Jp
dGVCYXJyaWVyQ2FsbDE7CisgICAgQ2FsbCBvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsMjsKKyAg
ICB7CisgICAgICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVy
QnJhbmNoKHZtLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMik7CisgICAgICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwg
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAg
ICAgICAgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbDEgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOworICAgICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4u
bGluaygmaml0KTsKKyAgICB9CisgICAgeworICAgICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgQ29kZUJsb2NrOjpvZmZzZXRPZlVubGlua2VkQ29kZUJsb2NrKCkpLCBhcmd1
bWVudEdQUjEpOworICAgICAgICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQu
YmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpOworICAgICAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgp
Pigmdm0sIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CisgICAgICAgIG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwyID0gaml0LmNhbGwoT3BlcmF0
aW9uUHRyVGFnKTsKKyAgICAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQp
OworICAgIH0KICAgICBqaXQubW92ZShHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgY2FuQmVP
cHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1Zh
bHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgb3duZXJJ
c1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgQ2FsbCBvcGVyYXRpb25PcHRpbWl6ZUNhbGw7CkBAIC0xMjg5LDcgKzEzMDIsOCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaml0LnJldCgpOwogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRp
b25Xcml0ZUJhcnJpZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bldyaXRlQmFycmllclNsb3dQYXRoKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25X
cml0ZUJhcnJpZXJDYWxsMSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25X
cml0ZUJhcnJpZXJTbG93UGF0aCkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uV3Jp
dGVCYXJyaWVyQ2FsbDIsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV3Jp
dGVCYXJyaWVyU2xvd1BhdGgpKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoT3B0aW9u
czo6dXNlREZHSklUKCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uT3B0aW1p
emVDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9wdGltaXplKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjgsMTAgKzEwMjgsOCBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSB2b2lkIHB1dEJ5VmFsT3B0aW1pCiAgICAgICAgIGlmICghaXNDb3B5T25Xcml0ZShi
YXNlT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgJiYgc3Vic2NyaXB0LmlzSW50MzIoKSkgewogICAg
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0p
OwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBj
b2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkgewot
ICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAg
ICAgICAgICAgICByZXBhdGNoQXJyYXlQdXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbywgUHV0S2luZDo6Tm90RGlyZWN0LCBlY21h
TW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwOTgsMTAgKzEwOTYsOCBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5VmFsCiAgICAgaWYgKCFpc0NvcHlP
bldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgpKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigp
KSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJl
KHZtKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdHZW5lcmljKHZtLCBj
b2RlQmxvY2ssIHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgIGlmIChwcm9maWxlKSB7Ci0gICAg
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
ciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHByb2ZpbGUpCisgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJlcGF0Y2hBcnJheVB1dEJ5
VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJ
bmZvLCBQdXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0
MTIsMTAgKzI0MDgsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlW
CiAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUodm0pOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0s
IGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAg
ICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcmVwYXRjaEFycmF5R2V0
QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCAqc3R1
YkluZm8pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAyODIxODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwotICAgIEFycmF5
UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVBy
b2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVtaXRMb2Fk
MihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogCkBAIC0yNzYs
NyArMjc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSQogICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigp
OwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgICAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAg
ICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAg
ICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFs
SW5kZXhdOwogICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsKQEAgLTQ2OSw3ICs0NjksNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RyCiAgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRl
Y29kZS5tX3ZhbHVlOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCBy
ZWdUMywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwgcmVnVDQpOwpAQCAtNTA1
LDcgKzUwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEkKICAg
ICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgICAgICBlY21hTW9kZSA9IEpJVDo6
ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICAgICAgcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKKyAgICAgICAgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogICAg
IH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02MjIsMTEgKzYyMiw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwg
cmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAK
LSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRF
bWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFu
Y2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1v
ZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5
TGVuZ3RoKSkpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAs
ICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCBy
ZWdUMik7Ci0gICAgICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMpOwotICAgIH0KKyAg
ICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0
UHJvZmlsaW5nKCkpCisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdU
MCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIHJlZ1QyKTsKIAogICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKApAQCAtNzk3LDcgKzc5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3Zh
bChjb25zdCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBB
cnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIGVt
aXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CkBAIC04MjAsNyArODE3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbgogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2Vu
ID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDI4MjE4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICBBcnJheVByb2ZpbGUq
IHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBw
cm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCByZWdUMSk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xv
d0Nhc2UoY29uc3QKICAgICBpZiAoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKSB7CiAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICAgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJyYXlQcm9m
aWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0g
ICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEkKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5t
X3ZhbHVlOwogICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgICAg
ICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgICAgICBwcm9maWxlID0g
bWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAg
LTExMDgsMTEgKzExMDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1CiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJl
Zyk7CiAgICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhN
b2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRN
b2RlOjpBcnJheUxlbmd0aCkpKTsKLSAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhD
ZWxsKHJlZ1QwLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5
UHJvZmlsZSwgcmVnVDEpOwotICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsK
LSAgICB9CisgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYg
c2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwocmVnVDAsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCByZWdUMSk7CiAKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCkBAIC0xNTExLDcgKzE1
MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUg
PSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0g
bWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7
CkBAIC0xNTM4LDcgKzE1MzUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNv
bnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5
VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQ
cm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBKSVRJbkJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwogCkBAIC0y
MzkzLDcgKzIzOTAsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
CiAgICAgfQogCiAgICAgc3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0
cyA9PSAxKTsKLSAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBPQkpFQ1Rf
T0ZGU0VUT0YoTWV0YWRhdGEsIG1fcHJvZmlsZSkpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MobWV0
YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSksIHJlZ1QxKTsK
KyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBWYWx1ZVByb2ZpbGU6Om9mZnNldE9m
Rmlyc3RCdWNrZXQoKSkpOwogCiAgICAgcmV0KCk7CiAKQEAgLTI0NDksNyArMjQ0Nyw4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICBDYWxsIG9wZXJhdGlv
biA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgSnVtcCBleGNlcHRpb25DaGVjayA9
IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0gICAgaml0LnN0b3Jl
NjQocmVnVDAsIEFkZHJlc3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZT
RVRPRihNZXRhZGF0YSwgbV9wcm9maWxlKSkpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9m
aWxlKSksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBqaXQuc3RvcmU2NChyZWdU
MCwgQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgVmFsdWVQcm9maWxlOjpvZmZz
ZXRPZkZpcnN0QnVja2V0KCkpKTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogCiAjaWYgQ1BVKFg4Nl82
NCkKQEAgLTI4NTQsNyArMjg1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCgKICAgICBWaXJ0dWFsUmVnaXN0ZXIgaW5kZXggPSBieXRlY29kZS5tX2luZGV4Owog
ICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU5hbWUgPSBieXRlY29kZS5tX3Byb3BlcnR5TmFt
ZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZW51bWVyYXRvciA9IGJ5dGVjb2RlLm1fZW51bWVyYXRv
cjsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7
CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAK
ICAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2FsbEZyYW1lKiBj
YWwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9QUk9GSUxFX1ZBTFVFKHZh
bHVlKSBkbyB7IFwKLSAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3Byb2Zp
bGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAorICAgICAgICBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1
ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5U
X0NBTExfRU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCkBA
IC03NjEsNyArNzYxLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUo
SgogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiB9CiAKLXN0YXRpYyBKU1Zh
bHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFs
dWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1ldGFkYXRhJiBtZXRhZGF0
YSkKK3N0YXRpYyBKU1ZhbHVlIHBlcmZvcm1MTEludEdldEJ5SUQoY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRCeUlkTW9kZU1l
dGFkYXRhJiBtZXRhZGF0YSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtODI0LDggKzgyNCw5IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZv
cm1MTEludEdldEJ5SUQoY29uc3QKICAgICB9IGVsc2UgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNT
X1NMT1cgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJy
YXlQcm9maWxlKTsKICAgICAgICAgICAgIG1ldGFkYXRhLnNldEFycmF5TGVuZ3RoTW9kZSgpOwot
ICAgICAgICAgICAgbWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZl
U3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAgICAg
ICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUodm0pKTsKICAgICAgICAgfQogICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2Rl
QmxvY2spOwogICAgIH0KQEAgLTg0MSw3ICs4NDIsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKIAotICAgIEpTVmFs
dWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmpl
Y3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2Jq
ZWN0LCBiYXNlVmFsdWUsIGlkZW50LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUpOwogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQog
CkBAIC04NTcsMTAgKzg1OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRl
cmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKQogICAgICAgICBMTElOVF9USFJP
VyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFj
ZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3Jt
TExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnBy
b3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0
LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIG5leHRSZWdp
c3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fbmV4dFBy
b2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX25leHRQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAtODc3LDEwICs4
NzgsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yXwogICAgIGlm
ICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0
QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2RlTWV0YWRhdGEpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmpl
Y3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2Rv
bmVNb2RlTWV0YWRhdGEsIG51bGxwdHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
ICAgIGRvbmVSZWdpc3RlciA9IHJlc3VsdDsKLSAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spLm1fZG9uZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2RvbmVQcm9maWxlLT5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApA
QCAtODk0LDEwICs4OTUsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJh
dG9yXwogICAgIFJlZ2lzdGVyJiB2YWx1ZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIEpTVmFsdWUgaXRlcmF0b3JSZXR1cm4gPSB2YWx1ZVJl
Z2lzdGVyLmpzVmFsdWUoKTsKIAotICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0
QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yUmV0dXJuLCB2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZSwgbWV0YWRhdGEubV92YWx1ZU1vZGVNZXRhZGF0YSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9i
amVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRhZGF0YS5t
X3ZhbHVlTW9kZU1ldGFkYXRhLCBudWxscHRyKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKICAgICB2YWx1ZVJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykubV92YWx1ZVByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CisgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmlsZS0+
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgTExJTlRfRU5EKCk7
CiB9CiAKQEAgLTEwMjQsNyArMTAyNSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
Z2V0QnlWYWwoVk0KICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJz
Y3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSAqaW5k
ZXg7CiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGU7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgewog
ICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKSB7CkBA
IC0xNDI5LDcgKzE0MzAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fYnlf
dmFsCiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5C
eVZhbD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
ayk7Ci0gICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZh
bChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpLCBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksICZtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZSkpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRo
czo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KSwgbWV0
YWRhdGEubV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9oYXNfcHJpdmF0ZV9uYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI4
MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIG1hY3JvIG1ha2VSZXR1
cm5Qcm9maWxlZChvcGNvZGVTdHJ1Y3QsIGcKICAgICAgICAgbW92ZSBwYXlsb2FkLCB0MAogCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVj
dCwgbV9wcm9maWxlLCB0NSwgdDEsIHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDAsIHQyKQogICAgICAgICBnZXQobV9kc3QsIHQyKQog
ICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogICAgICAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KQEAgLTg1LDcgKzg1LDcgQEAgbWFjcm8gZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydQogICAgIHN0b3JlaSByMSwgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAg
ICAgbWV0YWRhdGEoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxl
KG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjEsIHIwLCB0MykKICAg
ICBkaXNwYXRjaCgpCiAKIGVuZApAQCAtNjc3LDkgKzY3NywxMCBAQCBtYWNybyB3cml0ZUJhcnJp
ZXJPbkdsb2JhbExleGljYWxFbnZpcm9uCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9h
ZCkKLSAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFt
ZSUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21ldGFkYXRhXQotICAgIHN0b3JlaSBwYXlsb2FkLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgUGF5bG9h
ZE9mZnNldFttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2Zp
bGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkLCBzY3JhdGNoKQorICAgIGxvYWRwICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJVttZXRhZGF0YV0sIHNjcmF0Y2gKKyAg
ICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtzY3JhdGNo
XQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRP
ZmZzZXRbc2NyYXRjaF0KIGVuZAogCiAKQEAgLTE0MzcsNyArMTQzOCw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6
Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWREaXJlY3RTbG93CiAgICAgbG9hZFByb3BlcnR5QXRWYXJp
YWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGly
ZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERp
cmVjdCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAu
b3BHZXRCeUlkRGlyZWN0U2xvdzoKQEAgLTE0NTgsMzcgKzE0NTksMjkgQEAgbWFjcm8gcGVyZm9y
bUdldEJ5SURIZWxwZXIob3Bjb2RlU3RydWN0LAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVs
CiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUl
LmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJp
YWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwg
dDEpCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6Ci0gICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRC
eUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKKyAgICBiYm5lcSB0MSwg
Y29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdldEJ5SWRVbnNldAogICAgIGxv
YWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJ
RFt0Ml0sIHQzCiAgICAgYmluZXEgdDMsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNo
ZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1v
ZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0sIHQzCiAgICAgbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2Zp
bGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAgIHZhbHVl
UHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEsIHQzKQog
ICAgIHJldHVybih0MCwgdDEpCiAKLS5vcEdldEJ5SWRBcnJheUxlbmd0aDoKLSAgICBiYm5lcSB0
MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCwgLm9wR2V0QnlJZFVuc2V0Ci0g
ICAgbW92ZSB0MywgdDAKLSAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDAsIHQy
LCB0NSkKLSAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKLSAgICBidGl6IHQwLCBJbmRl
eGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5
W3QzXSwgdDAKLSAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAotICAgIGJpbHQgdDAsIDAsIHNsb3dM
YWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQy
LCBJbnQzMlRhZywgdDApCi0gICAgcmV0dXJuKEludDMyVGFnLCB0MCkKKyMgSXQgY2FuJ3QgYmUg
YXJyYXkgbGVuZ3RoIHNpbmNlIHdlIGRvbid0IHVzZSB0aGlzIGZvciBhcmJpdHJhcnkgZ2V0X2J5
X2lkJ3MgdGhhdCBjb3VsZAorIyBhY2Nlc3MgImxlbmd0aCIuIFdlIG9ubHkgdXNlIGl0IGZvciBp
dGVyYXRvciBvcGNvZGVzIHdoaWNoIGFyZW4ndCB1c2luZyAibGVuZ3RoIiBhcyBhbgorIyBpZGVu
dGlmaWVyLgogICAgIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9k
ZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKICAgICBiaW5lcSB0
MCwgdDEsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCBVbmRlZmluZWRUYWcsIDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywgMCwgdDMpCiAgICAgcmV0
dXJuKFVuZGVmaW5lZFRhZywgMCkKIAogZW5kCkBAIC0xNTA2LDIwICsxNDk5LDIwIEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKICAgICBiaW5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkcCBPcEdldEJ5SWQ6
Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDVdLCB0
MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCi0gICAg
dmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQorICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJu
KHQwLCB0MSkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBjb25zdGV4
cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRT
bG93KQogICAgIG1vdmUgdDMsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRh
dGE6Om1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQyLCB0NSwg
dDApCisgICAgYXJyYXlQcm9maWxlKE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxl
LCB0MiwgdDUsIHQwLCB0MSkKICAgICBidGl6IHQyLCBJc0FycmF5LCAub3BHZXRCeUlkU2xvdwog
ICAgIGJ0aXogdDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xvdwogICAgIGxvYWRw
IEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGlu
Z0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAK
ICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5
SWQsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eUlkLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRhZywgdDAsIHQzKQogICAgIHJldHVybihJbnQzMlRh
ZywgdDApCiAKIC5vcEdldEJ5SWRVbnNldDoKQEAgLTE1MjcsNyArMTUyMCw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKICAgICBsb2FkaSBPcEdldEJ5SWQ6Ok1l
dGFkYXRhOjptX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSURbdDVdLCB0MQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9w
R2V0QnlJZFNsb3cpCiAgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwg
VW5kZWZpbmVkVGFnLCAwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwg
dDUsIFVuZGVmaW5lZFRhZywgMCwgdDMpCiAgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKIAog
Lm9wR2V0QnlJZERlZmF1bHQ6CkBAIC0xNTM2LDcgKzE1MjksNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAgICAgbG9hZGlzIE9wR2V0QnlJZDo6TWV0YWRhdGE6
Om1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0NV0sIHQyCiAgICAgYmlu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgbG9h
ZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQog
CiAub3BHZXRCeUlkU2xvdzoKQEAgLTE1NDYsNyArMTUzOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X2J5X2lkLCBPcEdldEIKIC5vc3JSZXR1cm5Qb2ludDoKICAgICBnZXR0ZXJTZXR0
ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X2lkLCBzaXplKQogICAgIG1ldGFkYXRhKHQy
LCB0MykKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwLCB0MykK
ICAgICByZXR1cm4ocjEsIHIwKQogCiBlbmQpCkBAIC0xNjI0LDcgKzE2MTcsNyBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgICAgIGdldChtX2RzdCwgc2Ny
YXRjaCkKICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4
XQogICAgICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0
Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJ
bnQzMlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkLCBzY3JhdGNoKQogICAgICAg
ICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2MzMsNyArMTYyNiw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICAgICAgZmQyaWkgcmVzdWx0LCBzY3Jh
dGNoMiwgc2NyYXRjaDMKICAgICAgICAgc3RvcmVpIHNjcmF0Y2gzLCBUYWdPZmZzZXRbY2ZyLCBz
Y3JhdGNoMSwgOF0KICAgICAgICAgc3RvcmVpIHNjcmF0Y2gyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
c2NyYXRjaDEsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFs
LCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2NyYXRjaDIsIHNjcmF0Y2gxKQogICAgICAgICBk
aXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE2NDEsNyArMTYzNCw3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBnZXQobV9iYXNlLCB0MikKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5
VmFsU2xvdykKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5VmFsOjpN
ZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgYXJyYXlQcm9maWxlKE9w
R2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSwgdDMpCiAgICAg
Z2V0KG1fcHJvcGVydHksIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNp
emUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKICAgICBsb2FkcCBKU09iamVj
dDo6bV9idXR0ZXJmbHlbdDBdLCB0MwpAQCAtMTY3OCw3ICsxNjcxLDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogLm9wR2V0QnlWYWxOb3RFbXB0eToKICAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCB0MiwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUs
IHQyLCB0MSwgdDMpCiAgICAgZGlzcGF0Y2goKQogCiAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9y
YWdlOgpAQCAtMTY5MSw3ICsxNjg0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldAogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1
cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQorICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQzKQogICAgIHJldHVy
bihyMSwgcjApCiAKIGVuZCkKQEAgLTE3MTIsNyArMTcwNSw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDNdLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CiAKICAgICBsb2FkUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVO
YW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0
ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAog
Lm9wR2V0UHJpdmF0ZU5hbWVTbG93OgpAQCAtMTc3NCw3ICsxNzY3LDggQEAgbWFjcm8gcHV0QnlW
YWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogCiAgICAgICAgIC5vdXRPZkJvdW5kczoKICAg
ICAgICAgICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRCeVZhbE91dE9mQm91bmRzCi0g
ICAgICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJv
ZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0NV0sIHQyCisgICAgICAgICAgICBzdG9yZWIg
MSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQogICAgICAgICAgICAgYWRkaSAx
LCB0MywgdDIKICAgICAgICAgICAgIHN0b3JlaSB0MiwgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXQogICAgICAgICAgICAg
am1wIC5zdG9yZVJlc3VsdApAQCAtMTc4NSw3ICsxNzc5LDcgQEAgbWFjcm8gcHV0QnlWYWxPcChv
cGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBnZXQobV9iYXNlLCB0MCkKICAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQxLCAub3BQ
dXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCi0gICAgICAgIGFycmF5UHJvZmlsZSgl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwKQorICAg
ICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmls
ZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MCkKICAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIEludDMyVGFnLCB0MywgLm9w
UHV0QnlWYWxTbG93KQogICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0
MApAQCAtMTgzOSw3ICsxODMzLDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1YwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZhbEFycmF5U3RvcmFn
ZUVtcHR5OgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Fy
cmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAgc3RvcmViIDEs
IEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0KICAgICAgICAgYWRkaSAxLCBBcnJh
eVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJpYiB0MywgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAgICAgICBhZGRpIDEs
IHQzLCB0MQpAQCAtMTg0Nyw3ICsxODQyLDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1l
LCBvcGNvZGVTdHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJl
c3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoKLSAgICAgICAgc3RvcmViIDEsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRPZkJvdW5kc1t0NV0K
KyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZVt0
NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0T2ZCb3VuZHNbdDFd
CiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKQEAgLTI1MTUsNyArMjUxMSw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAgICBtYWNybyBn
ZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9v
cGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0Mywg
dDAsIHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2Zp
bGUsIHQ1LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9w
cm9maWxlLCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQK
IApAQCAtMjUyNCw3ICsyNTIwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9z
Y29wZSwgTwogICAgICAgICBsb2FkcCBUYWdPZmZzZXRbdDBdLCB0MQogICAgICAgICBsb2FkcCBQ
YXlsb2FkT2Zmc2V0W3QwXSwgdDIKICAgICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MSkKLSAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIp
CisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEs
IHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApAQCAtMjUzMiw3ICsy
NTI4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogICAgICAg
ICBsb2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQzCiAgICAg
ICAgIGxvYWRwIEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFRhZ09mZnNldFt0MCwg
dDMsIDhdLCB0MQogICAgICAgICBsb2FkcCBKU0xleGljYWxFbnZpcm9ubWVudF92YXJpYWJsZXMg
KyBQYXlsb2FkT2Zmc2V0W3QwLCB0MywgOF0sIHQyCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdl
dEZyb21TY29wZSwgbV9wcm9maWxlLCB0NSwgdDEsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MiwgdDMpCiAgICAgICAgIHJldHVy
bih0MSwgdDIpCiAgICAgZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyODIxODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
d29ya2luZyBjb3B5KQpAQCAtNjgsMTUgKzY4LDE2IEBAIG1hY3JvIG1ha2VSZXR1cm5Qcm9maWxl
ZChvcGNvZGVTdHJ1Y3QsIGcKICAgICBmbihtYWNybyAodmFsdWUpCiAgICAgICAgIG1vdmUgdmFs
dWUsIHQzCiAgICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgdmFsdWVQcm9maWxlKG9w
Y29kZVN0cnVjdCwgbV9wcm9maWxlLCB0MSwgdDMpCisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNv
ZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDEsIHQzLCB0MikKICAgICAgICAgZ2V0KG1fZHN0LCB0MSkK
ICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MSwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogICAg
IGVuZCkKIGVuZAogCi1tYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxlTmFt
ZSwgbWV0YWRhdGEsIHZhbHVlKQotICAgIHN0b3JlcSB2YWx1ZSwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0c1ttZXRhZGF0YV0KK21hY3JvIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUsIHNjcmF0Y2gp
CisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlW21ldGFk
YXRhXSwgc2NyYXRjaAorICAgIHN0b3JlcSB2YWx1ZSwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHNb
c2NyYXRjaF0KIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMgY2xh
aW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KQEAgLTg3LDcgKzg4LDcgQEAgbWFj
cm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydQogICAgIGdldChzaXplLCBvcGNv
ZGVTdHJ1Y3QsIGRzdFZpcnR1YWxSZWdpc3RlciwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0
MSwgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVTdHJ1Y3QsIHQyLCB0MSkKLSAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjApCisgICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHIwLCB0MykKICAg
ICBkaXNwYXRjaCgpCiBlbmQKIApAQCAtMTUwOSw3ICsxNTEwLDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LAogICAgIGJpbmVxIHQwLCB0MSwgLm9wR2V0QnlJZERp
cmVjdFNsb3cKICAgICBsb2FkaSBPcEdldEJ5SWREaXJlY3Q6Ok1ldGFkYXRhOjptX29mZnNldFt0
Ml0sIHQxCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQwKQorICAgIHZh
bHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDIsIHQwLCB0MSkKICAgICBy
ZXR1cm4odDApCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAtMTUxOCw3ICsxNTE5LDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LAogZW5kKQogCiAjIFRoZSBi
YXNlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0MwotbWFjcm8gcGVyZm9ybUdldEJ5SURIZWxwZXIo
b3Bjb2RlU3RydWN0LCBtb2RlTWV0YWRhdGFOYW1lLCB2YWx1ZVByb2ZpbGVOYW1lLCBzbG93TGFi
ZWwsIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCittYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihv
cGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJl
bCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwgZG9BcnJheVByb2ZpbGUpCiAgICAgbWV0YWRhdGEo
dDIsIHQxKQogICAgIGxvYWRiICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0
YU5hbWUlLm1vZGVbdDJdLCB0MQogCkBAIC0xNTI5LDcgKzE1MzAsNyBAQCBtYWNybyBwZXJmb3Jt
R2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwK
ICAgICBsb2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUu
ZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlh
YmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlk
UHJvdG9Mb2FkOgpAQCAtMTU0MCwyNyArMTU0MSwyNyBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhl
bHBlcihvcGNvZGVTdHJ1Y3QsCiAgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKICAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90
b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MwogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVP
ZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRBcnJh
eUxlbmd0aDoKICAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbW92ZSB0MywgdDAKLSAgICBhcnJheVByb2ZpbGUoJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKKyAgICBkb0FycmF5UHJvZmlsZSh0MCwgdDIsIHQ1
LCB0MSkKICAgICBidGl6IHQwLCBJc0FycmF5LCBzbG93TGFiZWwKICAgICBidGl6IHQwLCBJbmRl
eGluZ1NoYXBlTWFzaywgc2xvd0xhYmVsCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6
bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRl
ciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBi
aWx0IHQwLCAwLCBzbG93TGFiZWwKICAgICBvcnEgbnVtYmVyVGFnLCB0MAotICAgIHZhbHVlUHJv
ZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKKyAgICB2YWx1ZVBy
b2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQogICAgIHJl
dHVybih0MCkKIAogLm9wR2V0QnlJZFVuc2V0OgogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0M10sIHQxCiAgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1l
dGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKICAgICBiaW5lcSB0MCwg
dDEsIHNsb3dMYWJlbAotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIHQyLCBWYWx1ZVVuZGVmaW5lZCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgVmFsdWVVbmRlZmluZWQsIHQxKQogICAgIHJldHVybihW
YWx1ZVVuZGVmaW5lZCkKIAogZW5kCkBAIC0xNTY4LDcgKzE1NjksMTAgQEAgZW5kCiBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV9iYXNlLCB0MCkKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQotICAg
IHBlcmZvcm1HZXRCeUlESGVscGVyKE9wR2V0QnlJZCwgbV9tb2RlTWV0YWRhdGEsIG1fcHJvZmls
ZSwgLm9wR2V0QnlJZFNsb3csIHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgcGVyZm9ybUdl
dEJ5SURIZWxwZXIoT3BHZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRC
eUlkU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHJldHVybiwKKyAgICAgICAgbWFjcm8gKGNlbGxBbmRJ
bmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgICAgICAgICBh
cnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIGNlbGxBbmRJ
bmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgICAgIGVuZCkK
IAogLm9wR2V0QnlJZFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0
X2J5X2lkKQpAQCAtMTU3Nyw3ICsxNTgxLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWQsIE9wR2V0QgogLm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRS
ZXR1cm5Qb2ludChvcF9nZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwKQorICAgIHZhbHVlUHJv
ZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIwLCB0MykKICAgICByZXR1cm4ocjApCiAK
IGVuZCkKQEAgLTE2OTgsNyArMTcwMiw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5
X3ZhbCwgT3BHZXQKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAg
ICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwg
c2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwg
dDUsIHJlc3VsdCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwg
dDUsIHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZAogCkBAIC0x
NzE5LDcgKzE3MjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDIsIHQwLCAub3BHZXRCeVZh
bFNsb3cpCiAKICAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5VmFsOjpN
ZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgYXJyYXlQcm9maWxlKE9w
R2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSwgdDMpCiAKICAg
ICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNp
emUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTc1OSw3ICsxNzYzLDcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogCiAub3BHZXRCeVZhbERvbmU6CiAg
ICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwg
bV9wcm9maWxlLCB0NSwgdDIpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmls
ZSwgdDUsIHQyLCB0MykKICAgICBkaXNwYXRjaCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0
b3JhZ2U6CkBAIC0xNzcyLDcgKzE3NzYsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV92YWwsIE9wR2V0CiAub3NyUmV0dXJuUG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJl
dHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDUsIHQyKQotICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCkKKyAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcjAsIHQzKQogICAgIHJldHVybihyMCkK
IAogZW5kKQpAQCAtMTc5NCw3ICsxNzk4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
cHJpdmF0ZV9uYW1lLAogCiAgICAgbG9hZGkgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1f
b2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0Mywg
dDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDIsIHQw
KQorICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQyLCB0MCwg
dDMpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRQcml2YXRlTmFtZVNsb3c6CkBAIC0xODk3LDcg
KzE5MDEsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAKICAg
ICAgICAgLm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0MF0sIC5v
cFB1dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVbdDVdCisgICAgICAg
ICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwg
dDIKKyAgICAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hvbGVb
dDJdCiAgICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgogICAgICAgICAgICAgc3RvcmVpIHQyLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNM
ZW5ndGhbdDBdCiAgICAgICAgICAgICBqbXAgLnN0b3JlUmVzdWx0CkBAIC0xOTA3LDcgKzE5MTIs
NyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MSwgLm9wUHV0QnlWYWxTbG93KQog
ICAgICAgICBtb3ZlIHQxLCB0MgogICAgICAgICBtZXRhZGF0YSh0NSwgdDApCi0gICAgICAgIGFy
cmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0Miwg
dDUsIHQwKQorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCwgdDMpCiAgICAgICAgIGdldChtX3Byb3BlcnR5LCB0
MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQwLCB0MywgLm9w
UHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKQEAgLTE5NjIsNyArMTk2Nyw4IEBA
IG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgZGlzcGF0
Y2goKQogCiAgICAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eToKLSAgICAgICAgc3RvcmVi
IDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9tYXlTdG9yZVRv
SG9sZVt0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5U3Rv
cmVUb0hvbGVbdDFdCiAgICAgICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0lu
VmVjdG9yW3QwXQogICAgICAgICBiaWIgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRl
eGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsQXJyYXlT
dG9yYWdlU3RvcmVSZXN1bHQKICAgICAgICAgYWRkaSAxLCB0MywgdDEKQEAgLTE5NzAsNyArMTk3
Niw4IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAg
am1wIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKIAogICAgIC5vcFB1dEJ5VmFs
T3V0T2ZCb3VuZHM6Ci0gICAgICAgIHN0b3JlYiAxLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJyYXlQcm9maWxlLm1fb3V0T2ZCb3VuZHNbdDVdCisgICAgICAgIGxvYWRwICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0MQorICAgICAgICBzdG9yZWIg
MSwgQXJyYXlQcm9maWxlOjptX291dE9mQm91bmRzW3QxXQogICAgIC5vcFB1dEJ5VmFsU2xvdzoK
ICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAg
ICAgICBkaXNwYXRjaCgpCkBAIC0yNjYyLDcgKzI2NjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgbWFjcm8gZ2V0UHJvcGVydHkoKQogICAgICAgICBs
b2FkcCBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAg
IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKLSAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAgICAgICAgdmFsdWVQ
cm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDMpCiAgICAgICAgIHJl
dHVybih0MikKICAgICBlbmQKIApAQCAtMjY3MCwxNCArMjY3NywxNCBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3Bl
OjpNZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDAKICAgICAgICAgbG9hZHEgW3QwXSwgdDAKICAg
ICAgICAgdGR6Q2hlY2tJZk5lY2Vzc2FyeSh0MCkKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCkKKyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDMpCiAgICAgICAgIHJldHVybih0MCkKICAg
ICBlbmQKIAogICAgIG1hY3JvIGdldENsb3N1cmVWYXIoKQogICAgICAgICBsb2FkcCBPcEdldEZy
b21TY29wZTo6TWV0YWRhdGE6Om1fb3BlcmFuZFt0NV0sIHQxCiAgICAgICAgIGxvYWRxIEpTTGV4
aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1t0MCwgdDEsIDhdLCB0MAotICAgICAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwKQorICAgICAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MykKICAgICAgICAgcmV0
dXJuKHQwKQogICAgIGVuZAogCkBAIC0zMDAyLDcgKzMwMDksNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wCiAKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2l0ZXJh
dG9yLCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5pdGVyYXRvck9wZW5HZW5lcmlj
R2V0TmV4dFNsb3cKLSAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9t
b2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNs
b3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCkKKyAgICBwZXJmb3JtR2V0
QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUs
IC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5l
eHRBbmREaXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkgZW5kKQogCiAuaXRlcmF0b3JPcGVuR2Vu
ZXJpY0dldE5leHRTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0ZXJh
dG9yX29wZW5fZ2V0X25leHQpCkBAIC0zMDYxLDcgKzMwNjgsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wCiAKICAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVl
LCB0MykKICAgICBidHFueiB0Mywgbm90Q2VsbE1hc2ssIC5nZXREb25lU2xvdwotICAgIHBlcmZv
cm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9u
ZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRv
R2V0VmFsdWUpCisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fZG9u
ZU1vZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBzaXplLCBtZXRhZGF0
YSwgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSwgbWFjcm8oYSwgYiwgYywgZCkgZW5kKQogCiAu
Z2V0RG9uZVNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jf
bmV4dF9nZXRfZG9uZSkKQEAgLTMwODYsNyArMzA5Myw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfaXRlcmF0b3JfbmV4dCwgT3AKICAgICAjIFJlbG9hZCB0aGUgbmV4dCByZXN1bHQgdG1wIHNp
bmNlIHRoZSBnZXRfYnlfaWQgYWJvdmUgbWF5IGhhdmUgY2xvYmJlcmVkIHQzLgogICAgIGxvYWRW
YXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQogICAgICMgV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBp
ZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJlIHNpbmNlIHdlIHdpbGwgaGF2ZSB0
aHJvd24gYW4gZXJyb3IgYmVmb3JlLgotICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0
b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZhbHVlU2xv
dywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCkKKyAgICBwZXJmb3JtR2V0
QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVBy
b2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0
Y2gsIG1hY3JvKGEsIGIsIGMsIGQpIGVuZCkKIAogLmdldFZhbHVlU2xvdzoKICAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKQEAgLTMxNTks
NyArMzE2Niw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZW51bWVyYXRvcl9nZXRfYnkKICAg
ICBsb2FkcSBjb25zdGV4cHIgKChvZmZzZXRJbkJ1dHRlcmZseShmaXJzdE91dE9mTGluZU9mZnNl
dCkpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSlbdDAsIHQyLCA4XSwgdDIKIAogLmRvbmU6Ci0g
ICAgdmFsdWVQcm9maWxlKE9wRW51bWVyYXRvckdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikK
KyAgICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJhdG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQy
LCB0MykKICAgICByZXR1cm4odDIpCiAKIC5nZXRTbG93UGF0aDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlz
aW9uIDI4MjE4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDEzLDYgKzQxMywxMSBAQCBtYWNybyBtZXRh
ZGF0YShzaXplLCBvcGNvZGUsIGRzdCwgc2NyYXRjCiAgICAgbXVsaSBzaXplb2YgJW9wY29kZSU6
Ok1ldGFkYXRhLCBzY3JhdGNoICMgc2NyYXRjaCAqPSBzaXplb2YoT3A6Ok1ldGFkYXRhKQogICAg
IGFkZGkgc2NyYXRjaCwgZHN0ICMgb2Zmc2V0ICs9IHNjcmF0Y2gKICAgICBhZGRwIG1ldGFkYXRh
VGFibGUsIGRzdCAjIHJldHVybiAmbWV0YWRhdGFUYWJsZVtvZmZzZXRdCisgICAgIyByb3VuZFVw
VG9NdWx0aXBsZU9mKGFsaWdub2YoTWV0YWRhdGEpLCBkc3QpCisgICAgY29uc3QgYWRkZXIgPSAo
Y29uc3RleHByIChhbGlnbm9mKCVvcGNvZGUlOjpNZXRhZGF0YSkpKSAtIDEKKyAgICBjb25zdCBt
YXNrID0gfmFkZGVyCisgICAgYWRkcCBhZGRlciwgZHN0CisgICAgYW5kcCBtYXNrLCBkc3QKIGVu
ZAogCiBtYWNybyBqdW1wSW1wbChkaXNwYXRjaEluZGlyZWN0LCB0YXJnZXRPZmZzZXRSZWcpCkBA
IC0xMjg0LDExICsxMjg5LDEyIEBAIG1hY3JvIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2lu
dChvcE4KICAgICBsb2FkaSBMTEludFJldHVyblBDW2Nmcl0sIFBDCiBlbmQKIAotbWFjcm8gYXJy
YXlQcm9maWxlKG9mZnNldCwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gp
CittYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0
YSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGNvbnN0IGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdU
eXBlCiAgICAgY29uc3QgaW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZSAKLSAgICBs
b2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHNjcmF0Y2gKLSAgICBzdG9yZWkgc2Ny
YXRjaCwgb2Zmc2V0ICsgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbbWV0YWRh
dGFdCisgICAgbG9hZHAgb2Zmc2V0W21ldGFkYXRhXSwgc2NyYXRjaDIKKyAgICBsb2FkaSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHNjcmF0Y2gxCisgICAgc3RvcmVpIHNjcmF0Y2gxLCBB
cnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFtzY3JhdGNoMl0KICAgICBsb2FkYiBK
U0NlbGw6Om1faW5kZXhpbmdUeXBlQW5kTWlzY1tjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIApA
QCAtMTYxMiw4ICsxNjE4LDggQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxl
QXJnUwogICAgIGFkZHAgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhh
dCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQogICAgIGFzc2VydChtYWNybyAob2spIGJwZ3RlcSB0
MCwgMCwgb2sgZW5kKQogICAgIGJ0cHogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCi0gICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0
b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0MV0sIHQzCi0gICAgYnRweiB0MywgLmFy
Z3VtZW50UHJvZmlsZURvbmUgIyBXaGVuIHdlIGNhbid0IEpJVCwgd2UgZG9uJ3QgYWxsb2NhdGUg
YW55IGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVzLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxp
bmtlZENvZGVbdDFdLCB0MworICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3ZhbHVlUHJv
ZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFb
dDNdLCB0MwogICAgIG11bHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGho
ISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKICAgICBsc2hpZnRwIDMsIHQwICMgb2Zmc2V0IG9m
IGxhc3QgSlNWYWx1ZSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLgogICAgIGFkZHAgdDIsIHQzICMg
cG9pbnRlciB0byBlbmQgb2YgVmFsdWVQcm9maWxlIGFycmF5IGluIENvZGVCbG9jazo6bV9hcmd1
bWVudFZhbHVlUHJvZmlsZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkocmV2aXNpb24g
MjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNv
ZGVTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDcgQEAgQnl0ZWNvZGVT
ZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZShDb2RlQgogICAgIFN0cmluZ1ByaW50U3RyZWFtIG91
dDsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJP
ZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIENTdHJpbmcgZGVzY3JpcHRp
b24gPSBjb2RlQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGkpLmJyaWVmRGVzY3JpcHRp
b24obG9ja2VyKTsKKyAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFs
dWVQcm9maWxlRm9yQXJndW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbigpOwogICAgICAgICBpZiAo
IWRlc2NyaXB0aW9uLmxlbmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG91
dC5yZXNldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
ZFR5cGVzLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE2LDYgKzE5MTYsOSBA
QCBwdWJsaWM6CiAKICAgICBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGEqIHJhcmVEYXRhKERl
Y29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEuZGVjb2RlKGRlY29kZXIp
OyB9CiAKKyAgICB1bnNpZ25lZCBudW1WYWx1ZVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1WYWx1ZVByb2ZpbGVzOyB9CisgICAgdW5zaWduZWQgbnVtQXJyYXlQcm9maWxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtQXJyYXlQcm9maWxlczsgfQorCiBwcml2YXRlOgogICAgIFZpcnR1YWxS
ZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lz
dGVyOwpAQCAtMTk0Nyw2ICsxOTUwLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1DYWxsZWVM
b2NhbHM7CiAgICAgaW50IG1fbnVtUGFyYW1ldGVyczsKIAorICAgIHVuc2lnbmVkIG1fbnVtVmFs
dWVQcm9maWxlczsKKyAgICB1bnNpZ25lZCBtX251bUFycmF5UHJvZmlsZXM7CisKICAgICBDYWNo
ZWRNZXRhZGF0YVRhYmxlIG1fbWV0YWRhdGE7CiAKICAgICBDYWNoZWRQdHI8Q2FjaGVkQ29kZUJs
b2NrUmFyZURhdGE+IG1fcmFyZURhdGE7CkBAIC0yMTUyLDYgKzIxNTgsOCBAQCBBTFdBWVNfSU5M
SU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlCiAgICAgLCBtX21ldGFkYXRhKGNhY2hlZENv
ZGVCbG9jay5tZXRhZGF0YShkZWNvZGVyKSkKICAgICAsIG1faW5zdHJ1Y3Rpb25zKGNhY2hlZENv
ZGVCbG9jay5pbnN0cnVjdGlvbnMoZGVjb2RlcikpCiAKKyAgICAsIG1fdmFsdWVQcm9maWxlcyhj
YWNoZWRDb2RlQmxvY2subnVtVmFsdWVQcm9maWxlcygpKQorICAgICwgbV9hcnJheVByb2ZpbGVz
KGNhY2hlZENvZGVCbG9jay5udW1BcnJheVByb2ZpbGVzKCkpCiAgICAgLCBtX3JhcmVEYXRhKGNh
Y2hlZENvZGVCbG9jay5yYXJlRGF0YShkZWNvZGVyKSkKIHsKIH0KQEAgLTIzMjIsNiArMjMzMCw4
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxvY2s8Q29kZUIKICAgICBtX251bVZh
cnMgPSBjb2RlQmxvY2subV9udW1WYXJzOwogICAgIG1fbnVtQ2FsbGVlTG9jYWxzID0gY29kZUJs
b2NrLm1fbnVtQ2FsbGVlTG9jYWxzOwogICAgIG1fbnVtUGFyYW1ldGVycyA9IGNvZGVCbG9jay5t
X251bVBhcmFtZXRlcnM7CisgICAgbV9udW1WYWx1ZVByb2ZpbGVzID0gY29kZUJsb2NrLm1fdmFs
dWVQcm9maWxlcy5zaXplKCk7CisgICAgbV9udW1BcnJheVByb2ZpbGVzID0gY29kZUJsb2NrLm1f
YXJyYXlQcm9maWxlcy5zaXplKCk7CiAgICAgbV9mZWF0dXJlcyA9IGNvZGVCbG9jay5tX2ZlYXR1
cmVzOwogICAgIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBjb2RlQmxvY2subV9sZXhpY2FsU2Nv
cGVGZWF0dXJlczsKICAgICBtX3BhcnNlTW9kZSA9IGNvZGVCbG9jay5tX3BhcnNlTW9kZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIFBST0ZJTEVfVkFMVUVfSU4odmFsdWVfXywgbV9wcm9maWxlKQog
CiAjZGVmaW5lIFBST0ZJTEVfVkFMVUVfSU4odmFsdWUsIHByb2ZpbGVOYW1lKSBkbyB7IFwKLSAg
ICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jaykucHJvZmlsZU5hbWUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogc3RhdGljIHZvaWQgdGhyb3dBcml0eUNo
ZWNrU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93
U2NvcGUmIHNjb3BlKQpAQCAtODg3LDcgKzg4Nyw3IEBAIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhS
ZXR1cm5UeXBlIGl0ZXJhdG8KICAgICBKU0NlbGwqIGl0ZXJhYmxlID0gR0VUKGJ5dGVjb2RlLm1f
aXRlcmFibGUpLmpzVmFsdWUoKS5hc0NlbGwoKTsKICAgICBpZiAoYXV0byBhcnJheUl0ZXJhdG9y
ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3IpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0sIGl0ZXJhYmxl
KSkgewotICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUub2JzZXJ2ZVN0cnVj
dHVyZUlEKGFycmF5LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1faXRl
cmFibGVQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlEKCkpOwog
CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2RlcyA9IG1l
dGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzIHwgSXRlcmF0aW9uTW9kZTo6RmFz
dEFycmF5OwogICAgICAgICAgICAgYXV0byYgaW5kZXhTbG90ID0gYXJyYXlJdGVyYXRvci0+aW50
ZXJuYWxGaWVsZChKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCk7CkBAIC05NTEsNyArOTUx
LDkgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90bwogSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnRlcikKIHsKICAgICBCRUdJTigpOwotICAg
IEhlYXA6OmhlYXAoY29kZUJsb2NrKS0+d3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgSGVh
cCYgaGVhcCA9ICpIZWFwOjpoZWFwKGNvZGVCbG9jayk7CisgICAgaGVhcC53cml0ZUJhcnJpZXIo
Y29kZUJsb2NrKTsKKyAgICBoZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCkpOwogICAgIEVORCgpOwogfQogCkBAIC05OTMsNyArOTk1LDcgQEAgSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAgIEFTU0VSVCghYmFzZVZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2UtPnN0cnVjdHVyZUlEKCkpOwor
ICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZS0+c3Ry
dWN0dXJlSUQoKSk7CiAKICAgICBKU1N0cmluZyogbmFtZSA9IGVudW1lcmF0b3ItPmNvbXB1dGVO
ZXh0KGdsb2JhbE9iamVjdCwgYmFzZSwgaW5kZXgsIG1vZGUpOwogICAgIENIRUNLX0VYQ0VQVElP
TigpOwpAQCAtMTAxOSw3ICsxMDIxLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9lbgogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yOjpJbmRleGVkTW9kZTogewogICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5p
c0NlbGwoKSkpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3Ry
dWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1
ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKSk7CiAgICAg
fQogICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1Y3R1cmVNb2RlOiB7
CkBAIC0xMDM0LDcgKzEwMzYsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX2VuCiAKICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGU6
IHsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBtb2RlICE9IEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZSkKLSAgICAgICAgICAgIG1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZUlEKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUtPm9ic2VydmVT
dHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBK
U1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lKS5q
c1ZhbHVlKCkpOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlm
aWVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwpAQCAtMTA2OCw3
ICsxMDcwLDcgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbgogICAg
IH0KIAogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhHRVQoYnl0ZWNvZGUubV9wcm9w
ZXJ0eU5hbWUpLmpzVmFsdWUoKSk7Ci0gICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0
aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3RyaW5nLCAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUpKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6
Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3RyaW5nLCBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZSkpKTsKIH0KIAogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsy
NywxMyBAQAogI2luY2x1ZGUgIkpTU2NvcGUuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxl
UmVjb3JkLmgiCisjaW5jbHVkZSAiRGVmZXJUZXJtaW5hdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpT
TW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUg
IlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJWTVRyYXBzSW5saW5lcy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtNTQsNyArNTYsNyBAQCBERUZJTkVfVklTSVRfQ0hJTERSRU4o
SlNTY29wZSk7CiBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBHZXRPclB1dCBnZXRPclB1dCwgc2l6ZV90IGRlcHRoLCBib29sJiBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcywgUmVzb2x2ZU9wJiBvcCwgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9u
TW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgRGVmZXJUZXJtaW5hdGlvbkZv
ckFXaGlsZSBkZWZlclNjb3BlKHZtKTsKIAogICAgIGlmIChzY29wZS0+aXNKU0xleGljYWxFbnZp
cm9ubWVudCgpKSB7CiAgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJv
bm1lbnQgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7CkBAIC04MCw4ICs4
Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAg
aWYgKHNjb3BlLT50eXBlKCkgPT0gTW9kdWxlRW52aXJvbm1lbnRUeXBlKSB7CiAgICAgICAgICAg
ICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU01vZHVs
ZUVudmlyb25tZW50Kj4oc2NvcGUpOwogICAgICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQq
IG1vZHVsZVJlY29yZCA9IG1vZHVsZUVudmlyb25tZW50LT5tb2R1bGVSZWNvcmQoKTsKKyAgICAg
ICAgICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAg
ICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IG1vZHVs
ZVJlY29yZC0+cmVzb2x2ZUltcG9ydChnbG9iYWxPYmplY3QsIGlkZW50KTsKLSAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgICAgICAgICAgY2F0
Y2hTY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgIGlmIChyZXNv
bHV0aW9uLnR5cGUgPT0gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJl
c29sdmVkKSB7CiAgICAgICAgICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIGltcG9ydGVk
UmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7CiAgICAgICAgICAgICAgICAgSlNNb2R1
bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZpcm9ubWVudCA9IGltcG9ydGVkUmVjb3JkLT5tb2R1
bGVFbnZpcm9ubWVudCgpOwpAQCAtMzA0LDkgKzMwNyw2IEBAIEpTT2JqZWN0KiBKU1Njb3BlOjpy
ZXNvbHZlKEpTR2xvYmFsT2JqZWMKIAogUmVzb2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgZGVwdGhPZmZzZXQsIEpTU2Nv
cGUqIHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0T3JQdXQgZ2V0T3JQdXQsIFJl
c29sdmVUeXBlIHVubGlua2VkVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9u
TW9kZSkKIHsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KICAgICBSZXNvbHZlT3Agb3AoRHlu
YW1pYywgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCk7CiAgICAgaWYgKHVubGlua2Vk
VHlwZSA9PSBEeW5hbWljKQogICAgICAgICByZXR1cm4gb3A7CkBAIC0zMTUsNyArMzE1LDYgQEAg
UmVzb2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShKU0dsbwogICAgIHNpemVfdCBkZXB0
aCA9IGRlcHRoT2Zmc2V0OwogICAgIGZvciAoOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgp
KSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFic3RyYWN0QWNjZXNzKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGlkZW50LCBnZXRPclB1dCwgZGVwdGgsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCBv
cCwgaW5pdGlhbGl6YXRpb25Nb2RlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBSZXNvbHZlT3AoRHluYW1pYywgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
MCkpOwogICAgICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAr
K2RlcHRoOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24g
MjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTk2LDEwICsxNTk2LDYgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVp
bnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFt
cGVkQXJyYXkpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2
QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50MTZBcnJheSkKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
a1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3Bh
Y2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNv
ZGVCbG9jaykKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFw
U3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2
MmIxMmEzCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNw
YWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4
MWIzMAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RS
ZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNo
OjB4OGVjNjhmMWYKQEAgLTE2NTMsNiArMTY0OSwxMSBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coCiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4OTU4ZTNlOWQKIERZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUp
IC8vIEhhc2g6MHg2NTA2ZmEzYwogCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
Ul9TTE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCitEWU5BTUlDX1NQQUNFX0FORF9T
RVRfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aykKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfU1BBQ0VfQU5EX1NF
VF9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykK
KwogI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKIAogSlND
ZWxsKiBWTTo6c2VudGluZWxTZXRCdWNrZXRTbG93KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkocmV2aXNpb24gMjgyMTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDEwICs2MDMsNiBAQCBwdWJsaWM6CiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OENsYW1wZWRBcnJheVNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDE2QXJyYXlT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQzMkFycmF5
U3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEV2
YWxDb2RlQmxvY2tTcGFjZSkKLSAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSkKLSAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQotICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIod2Vha09iamVjdFJlZlNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIod2Vha1NldFNwYWNlKQpAQCAtNjc4LDE5ICs2NzQsMjUgQEAgcHVibGljOgogICAgIAog
ICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQot
ICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2Rl
QmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAg
Ly8gSlNDOjpDb2RlQmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0K
LQogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxl
U3BhY2UpCiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGVTcGFjZSkKICAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZTsKICAgICBTcGFjZUFuZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOwogCisgICAgRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29kZUJsb2NrU3Bh
Y2UpCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVN
QkVSKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hVbmxpbmtlZENv
ZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBmdW5jKG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UuZ2V0KCkpOworICAgICAgICBmdW5jKG1fdW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9ja1NwYWNlLmdldCgpKTsKKyAgICAgICAgZnVuYyhtX3VubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLmdldCgpKTsKKyAgICAgICAgZnVuYyhtX3VubGlua2Vk
UHJvZ3JhbUNvZGVCbG9ja1NwYWNlLmdldCgpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBG
dW5jJiBmdW5jKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438274</attachid>
            <date>2021-09-15 12:21:26 -0700</date>
            <delta_ts>2021-09-16 13:08:36 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>158232</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwNSBA
QAorMjAyMS0wOS0xNSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgyOTQ3NTcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2ku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBWYWx1ZVByb2ZpbGVzIGFuZCBBcnJheVByb2Zp
bGVzIGZvciBub24tY2FsbCBvcGNvZGVzIGludG8KKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2su
IFRoaXMgd2F5LCB0aGUgZGF0YSBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgbGlua2VkIENvZGVCbG9j
a3MKKyAgICAgICAgb2YgdGhlIHNhbWUgVW5saW5rZWRDb2RlQmxvY2suIFRoZSBwcm9maWxpbmcg
YmV0IGhlcmUgaXMgdGhhdCB3aGVuIHRoZSBzYW1lIGNvZGUKKyAgICAgICAgcnVucyBpbiBhIGRp
ZmZlcmVudCBnbG9iYWwgb2JqZWN0LCBpdCBsYXJnZWx5IHJ1bnMgaW4gdGhlIHNhbWUgd2F5LiBX
ZSd2ZSBtYWRlCisgICAgICAgIHRoaXMgc2FtZSBiZXQgaW4gb3RoZXIgd2F5cyB3aXRoIG91ciBw
cm9maWxpbmcsIGFuZCBpdCBsYXJnZWx5IG1ha2VzIHNlbnNlCisgICAgICAgIHRvIGRvIGZvciBW
YWx1ZVByb2ZpbGUgYW5kIEFycmF5UHJvZmlsZSBzaW5jZSB0aGV5IGJvdGggaG9sZCBnbG9iYWwg
b2JqZWN0CisgICAgICAgIGluZGVwZW5kZW50IGRhdGEuCisgICAgICAgIAorICAgICAgICBCZWNh
dXNlIEFycmF5UHJvZmlsZXMgYXJlIG5vdyBzaGFyZWQgYmV0d2VlbiBDb2RlQmxvY2tzLCB0aGUg
ZXhpc3RpbmcgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMKKyAgICAgICAgYml0IGlzIHNs
aWdodGx5IGhhcmRlciB0byB0cmFjayBub3csIHNpbmNlIHRoZSBBcnJheVByb2ZpbGUgbWF5IHNl
ZSBpbnB1dHMgZnJvbSBhIGRpZmZlcmVudAorICAgICAgICBnbG9iYWwgb2JqZWN0LCBhbiBhcnJh
eSBtYXkgYmUgYW4gb3JpZ2luYWwgYXJyYXkgaW4gb25lIGxleGljYWwgZ2xvYmFsIG9iamVjdCwK
KyAgICAgICAgYnV0IG5vdCBhbm90aGVyLiBTbyB3ZSBub3cgdHJhY2sgd2hlbiBhbiBBcnJheVBy
b2ZpbGUgc2VlcyBhIGRpZmZlcmVudCBnbG9iYWwKKyAgICAgICAgb2JqZWN0IHRoYW4gdGhlIGxl
eGljYWwgZ2xvYmFsIG9iamVjdCwgYW5kIHdoZW4gd2Ugb2JzZXJ2ZSBleGl0cyBpbiB0aGUgREZH
LAorICAgICAgICB3ZSBwcm9wYWdhdGUgdGhhdCBiaXQgdG8gdGhlIG1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzIGJpdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtl
cyBpdCBzbyB3ZSBubyBsb25nZXIgaG9sZCB0aGUgQ29kZUJsb2NrIGxvY2sgd2hlbgorICAgICAg
ICBwcm9jZXNzaW5nIFZhbHVlUHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMuIFdlIG5vdyBhbGxv
dyBtdWx0aXBsZSBjb21waWxlcgorICAgICAgICB0aHJlYWRzIHRvIHJhY2UgYWdhaW5zdCBlYWNo
IG90aGVyIHdoZW4gdXBkYXRpbmcgdGhlc2UgcHJvZmlsZXMuIFRoaXMgaXMgZmluZS4KKyAgICAg
ICAgSXQgbWF5IGVuZCB1cCB3aXRoIGluY29tcGxldGUgZGF0YSBpbiB0aGUgcHJvZmlsZXMsIGJ1
dCBpdCB3b24ndCBjb3JydXB0IHRoZW0uCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFs
c28gbWFrZXMgaXQgc28gd2UgZmluYWxpemVkIHZpc2l0ZWQgVW5saW5rZWRDb2RlQmxvY2tzIHRv
IGZpbmFsaXplCisgICAgICAgIHRoZWlyIHZhbHVlIHByb2ZpbGVzLiBXZSBubyBsb25nZXIgZG8g
dGhhdCB3b3JrIGluc2lkZSBDb2RlQmxvY2sgZm9yIHRoZQorICAgICAgICBWYWx1ZVByb2ZpbGVz
IHRoYXQgVW5saW5rZWRDb2RlQmxvY2sgb3ducy4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgd2UgaGF2
ZSB0bworICAgICAgICBXcml0ZUJhcnJpZXIgVW5saW5rZWRDb2RlQmxvY2sgd2hlbiBleGVjdXRp
bmcgaW4gdGhlIExMSW50LCBCYXNlbGluZSwgYW5kCisgICAgICAgIG90aGVyIGFyZWFzLCBzdWNo
IGFzIE9TUiBleGl0LCBhbmQgaW4gdGhlIEdDIHdoZW4gYSBDb2RlQmxvY2sgd2FzIGV4ZWN1dGlu
Zy4KKyAgICAgICAgVGhhdCB3YXkgd2UncmUgZ3VhcmFudGVlZCB0byB2aXNpdCB0aGUgVW5saW5r
ZWRDb2RlQmxvY2ssIGFkZCBpdCB0byB0aGUKKyAgICAgICAgdmlzaXRlZCBzZXQsIGFuZCB0aGVu
IGZpbmFsaXplIGl0IGF0IHRoZSBlbmQgb2YgR0MuCisgICAgICAgIAorICAgICAgICBUaGlzIHBh
dGNoIGFsc28gbWFrZXMgaXQgc28gdGhhdCBpbnNpZGUgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
biwgd2UgZmluaXNoCisgICAgICAgIGxpbmtpbmcgYmVmb3JlIHdlIGRvIGFueXRoaW5nIHRoYXQg
Y2FuIHRocm93IGFuIGV4Y2VwdGlvbi4gSXQncyBub3QgdmFsaWQgdG8KKyAgICAgICAgZmluYWxp
emUgYSBDb2RlQmxvY2sgdGhhdCBpc24ndCBsaW5rZWQuCisgICAgICAgIAorICAgICAgICBUaGlz
IHdhcyBtZWFzdXJlZCBhcyBhIDAuNS0xJSBzcGVlZHVwIG9uIFNwZWVkb21ldGVyMi4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpicmllZkRlc2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpicmll
ZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVBy
b2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAg
ICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVkQXJyYXlNb2RlcyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjptYXlTdG9yZVRvSG9sZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b3V0T2ZCb3VuZHMgY29uc3QpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6c2V0RG9lc05vdFVzZU9yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpvYnNlcnZlZERpZmZlcmVudEds
b2JhbE9iamVjdCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50Lmg6CisgICAg
ICAgIChKU0M6OnZhbHVlUHJvZmlsZUZvckltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjppbml0aWFsaXplVGVtcGxhdGVPYmplY3RzKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpzZXROdW1QYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0Fu
ZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5
UHJlZGljdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmls
ZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvZmZzZXRPZlVubGlua2VkQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om1ldGFkYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaFZhbHVl
UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZSk6
CisgICAgICAgICogYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkV4aXRQcm9maWxlOjpoYXNBbnlFeGl0c0F0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5o
OgorICAgICAgICAoSlNDOjpHZXRCeUlkTW9kZU1ldGFkYXRhOjpzZXRBcnJheUxlbmd0aE1vZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVQYXJzZXI6OnByZWRpY3Rpb24gY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGFkYXRh
VGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEZWFsbG9jVGFibGU6OndpdGhPcGNvZGVUeXBlKToK
KyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmg6CisgICAgICAgIChKU0M6Ok1ldGFk
YXRhVGFibGU6OmdldCk6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OmZvckVhY2gpOgor
ICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpnZXRXaXRob3V0QWxpZ25pbmcpOgorICAgICAg
ICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpnZXRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbCk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphbGxvY2F0ZVNoYXJlZFByb2ZpbGVzKToK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6aGFzQW55RXhpdHNBdCBjb25zdCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpoYXNBbnlFeGl0c0F0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjphcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVt
VmFsdWVQcm9maWxlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpu
dW1BcnJheVByb2ZpbGVzIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpmaW5hbGl6ZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6aXNGaW5hbGl6ZWQpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZE1ldGFkYXRhVGFibGU6Omhhc01ldGFkYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRh
dGFUYWJsZTo6bnVtRW50cmllcyk6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OlZhbHVlUHJvZmlsZUJhc2UpOgorICAg
ICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjbGVhckJ1Y2tldHMpOgorICAgICAgICAoSlND
OjpWYWx1ZVByb2ZpbGVCYXNlOjpicmllZkRlc2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6VmFs
dWVQcm9maWxlQmFzZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6
VmFsdWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQ
cm9maWxlQmFzZTo6Y2xhc3NJbmZvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZH
QXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OmZyb21PYnNlcnZl
ZCk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFy
cmF5TW9kZTo6d2l0aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OkFycmF5TW9kZTo6d2l0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omdl
dFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmdldEFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aCk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyV3JpdGVCYXJyaWVyKToKKyAgICAgICAg
KEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25J
bmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKToKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsRmluYWxpemVycyk6CisgICAgICAgIChKU0M6OkhlYXA6OmRlbGV0ZVVubWFy
a2VkQ29tcGlsZWRDb2RlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cnVuRW5kUGhhc2UpOgorICAg
ICAgICAoSlNDOjpIZWFwOjphZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGppdC9KSVQu
aDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKToKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChK
U0M6OkpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXRCeVZhbE9wdGltaXplKToKKyAgICAgICAg
KEpTQzo6ZGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2lu
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5r
KToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAg
ICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6cGVyZm9y
bUxMSW50R2V0QnlJRCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgor
ICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHA6CisgICAgICAg
IChKU0M6OlByb2ZpbGVyOjpCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNlKToKKyAg
ICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29k
ZUJsb2NrOjpudW1WYWx1ZVByb2ZpbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29k
ZUJsb2NrOjpudW1BcnJheVByb2ZpbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJs
b2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6aXRlcmF0b3JOZXh0VHJ5RmFzdEltcGwpOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToKKyAgICAgICAg
KEpTQzo6SlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpmb3JFYWNoVW5s
aW5rZWRDb2RlQmxvY2tTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpmb3JFYWNoQ29kZUJsb2Nr
U3BhY2UpOiBEZWxldGVkLgorCiAyMDIxLTA5LTE0ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3Rl
YWRAc29ueS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMsIG1pZCBTZXB0
ZW1iZXIgMjAyMSBlZGl0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OCwxOCArMTE4LDQxIEBAIHZvaWQgZHVtcEFycmF5TW9kZXMoUHJpbnRTdHJlYW0mIG91dCwgQXIK
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiQmlnVWludDY0QXJyYXlNb2RlIik7CiB9CiAKLXZv
aWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQordm9pZCBBcnJheVByb2Zp
bGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAg
ICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCkKKyAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNv
dWxkIGJlIGNhbGxpbmcgaW50byB0aGlzIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgU3RydWN0dXJl
SUQgaWQgPSBtX2xhc3RTZWVuU3RydWN0dXJlSUQ7CisgICAgaWYgKCFpZCkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSBjb2RlQmxvY2st
PmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChtX2xhc3RTZWVuU3RydWN0dXJlSUQpOwot
ICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgbGFzdFNlZW5T
dHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSBjb2RlQmxvY2st
PmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChpZCk7CisgICAgY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGNvZGVCbG9jaywgbGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCA9IDA7CiB9CiAKLXZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpCit2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaykK
IHsKKyAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaW50byB0aGlzIGF0
IHRoZSBzYW1lIHRpbWUuCisgICAgU3RydWN0dXJlSUQgaWQgPSBtX2xhc3RTZWVuU3RydWN0dXJl
SUQ7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RydWN0dXJlKiBsYXN0
U2VlblN0cnVjdHVyZSA9IHVubGlua2VkQ29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFi
bGUoKS5nZXQoaWQpOworICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsYXN0U2VlblN0cnVj
dHVyZSwgbnVsbHB0cik7CisgICAgCisgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKK30K
Kwordm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSkKK3sKKyAgICBjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obGFzdFNlZW5TdHJ1Y3R1cmUsIGNvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpOworfQorCit2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0KQoreworICAgIC8vIE11bHRpcGxlIHRocmVhZHMgY291bGQgYmUgY2FsbGluZyBp
bnRvIHRoaXMgYXQgdGhlIHNhbWUgdGltZS4gVGhhdCB3b24ndCBsZWFkCisgICAgLy8gdG8gYW55
IGZvcm0gb2YgY29ycnVwdGlvbiwgYnV0IGNvdWxkIGNhdXNlIHVzIHRvIGdvIGRvd24gIW1fZGlk
UGVyZm9ybUZpcnN0UnVuUHJ1bmluZworICAgIC8vIHBhdGggc2ltdWx0YW5lb3VzbHkuCiAgICAg
bV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmUobGFzdFNlZW5T
dHJ1Y3R1cmUpOwogICAgIAogICAgIGlmICghbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nCkBA
IC0xNDAsOCArMTYzLDExIEBAIHZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRp
Y3QKICAgICAKICAgICBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB8PQogICAgICAgICBs
YXN0U2VlblN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgaWYgKCFnbG9iYWxP
YmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbGFzdFNlZW5TdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpOworICAgIGlmIChsZXhpY2FsR2xvYmFsT2JqZWN0ICYmIGdsb2JhbE9iamVjdCAmJiBn
bG9iYWxPYmplY3QgIT0gbGV4aWNhbEdsb2JhbE9iamVjdCkKKyAgICAgICAgbV9vYnNlcnZlZERp
ZmZlcmVudEdsb2JhbE9iamVjdCA9IHRydWU7CisgICAgaWYgKGdsb2JhbE9iamVjdAorICAgICAg
ICAmJiAhZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1
Y3R1cmUpCiAgICAgICAgICYmICFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxUeXBlZEFycmF5U3Ry
dWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKSkKICAgICAgICAgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgPSBmYWxzZTsKIH0KQEAgLTE2MywxMyArMTg5LDEzIEBAIHZvaWQgQXJyYXlQcm9m
aWxlOjpvYnNlcnZlSW5kZXhlZFJlYWQoVk0KICAgICB9CiB9CiAKLUNTdHJpbmcgQXJyYXlQcm9m
aWxlOjpicmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKK0NTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0
aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIsIGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIGJyaWVmRGVzY3JpcHRpb25XaXRob3V0
VXBkYXRpbmcobG9ja2VyKTsKKyAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2Nr
KTsKKyAgICByZXR1cm4gYnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZygpOwogfQogCi1D
U3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImKQorQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3Jp
cHRpb25XaXRob3V0VXBkYXRpbmcoKQogewogICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKICAg
ICBDb21tYVByaW50ZXIgY29tbWE7CkBAIC0xODQsNiArMjEwLDggQEAgQ1N0cmluZyBBcnJheVBy
b2ZpbGU6OmJyaWVmRGVzY3JpcHRpb25XaQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJJbnRl
cmNlcHQiKTsKICAgICBpZiAobV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgIk9yaWdpbmFsIik7CisgICAgaWYgKG1fb2JzZXJ2ZWREaWZmZXJl
bnRHbG9iYWxPYmplY3QpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkRpZmZlcmVudEdsb2Jh
bCIpOwogCiAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDI4MjQ2NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJs
b2NrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2s7CiAKIC8vIFRoaXMgaXMgYSBiaXRmaWVsZCB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzIGFu
IHR5cGUgb2YgYXJyYXkgYWNjZXNzIHRoYXQgd2UgaGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5
IGluZGV4aW5nIHR5cGVzIHRoYXQgdXNlIHRoZSBsb3dlciBiaXRzLgpAQCAtMjAxLDYgKzIwMiw3
IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxz
ZSkKICAgICAgICAgLCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyh0cnVlKQogICAgICAg
ICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKKyAgICAgICAgLCBtX29ic2Vy
dmVkRGlmZmVyZW50R2xvYmFsT2JqZWN0KGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC0y
MTcsMjIgKzIxOSwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlSUQoU3Ry
dWN0dXJlSUQgc3RydWN0dXJlSUQpIHsgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJl
SUQ7IH0KICAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsg
bV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOyB9CiAKLSAgICB2b2lkIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxv
Y2sqKTsKLSAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKKyAg
ICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihVbmxpbmtlZENvZGVCbG9jayopOworICAg
IHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKENvZGVCbG9jayopOworICAgIHZvaWQgY29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1
Y3R1cmUpOworICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKFN0cnVjdHVyZSogbGFz
dFNlZW5TdHJ1Y3R1cmUsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICAKICAgICB2b2lkIG9ic2VydmVBcnJheU1vZGUoQXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2
ZWRBcnJheU1vZGVzIHw9IG1vZGU7IH0KICAgICB2b2lkIG9ic2VydmVJbmRleGVkUmVhZChWTSYs
IEpTQ2VsbCosIHVuc2lnbmVkIGluZGV4KTsKIAotICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJh
eU1vZGVzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2
ZWRBcnJheU1vZGVzOyB9Ci0gICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRl
eGVkQWNjZXNzZXM7IH0KKyAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2RlcygpIGNvbnN0
IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CisgICAgYm9vbCBtYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlczsgfQogICAgIAotICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlTdG9yZVRvSG9sZTsgfQotICAgIGJvb2wgb3V0
T2ZCb3VuZHMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9vdXRP
ZkJvdW5kczsgfQorICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoKSBjb25zdCB7IHJldHVybiBtX21h
eVN0b3JlVG9Ib2xlOyB9CisgICAgYm9vbCBvdXRPZkJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1f
b3V0T2ZCb3VuZHM7IH0KICAgICAKLSAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlczsgfQorICAgIGJvb2wgdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVz
KCkgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KKyAgICB2
b2lkIHNldERvZXNOb3RVc2VPcmlnaW5hbEFycmF5U3RydWN0dXJlcygpIHsgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsgfQogCi0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0
aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwotICAgIENTdHJpbmcg
YnJpZWZEZXNjcmlwdGlvbldpdGhvdXRVcGRhdGluZyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
KTsKKyAgICBib29sIG9ic2VydmVkRGlmZmVyZW50R2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9vYnNlcnZlZERpZmZlcmVudEdsb2JhbE9iamVjdDsgfQorCisgICAgQ1N0cmluZyBicmll
ZkRlc2NyaXB0aW9uKENvZGVCbG9jayopOworICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbldp
dGhvdXRVcGRhdGluZygpOwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwpAQCAtMjQ1LDYgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CiAgICAgYm9vbCBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyA6IDE7CiAgICAgYm9vbCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5p
bmcgOiAxOworICAgIGJvb2wgbV9vYnNlcnZlZERpZmZlcmVudEdsb2JhbE9iamVjdCA6IDE7CiAg
ICAgQXJyYXlNb2RlcyBtX29ic2VydmVkQXJyYXlNb2RlcyB7IDAgfTsKIH07CiBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihBcnJheVByb2ZpbGUpID09IDEyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkocmV2aXNpb24gMjgyNDY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkod29ya2luZyBj
b3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIG9wIDpnZXRfYXJndW1lbnQsCiAgICAgICAgIGluZGV4
OiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmFy
Z3VtZW50X2NvdW50LApAQCAtMTgzLDcgKzE4Myw3IEBAIG9wIDp0b190aGlzLAogICAgIG1ldGFk
YXRhOiB7CiAgICAgICAgIGNhY2hlZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICAgICAg
dG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMsCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmls
ZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Y2hlY2tf
dGR6LApAQCAtMzA5LDcgKzMwOSw3IEBAIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3As
CiAgICAgICAgIHJoczogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsK
LSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJv
ZmlsZS4qCiAgICAgfQogCiBvcCA6Yml0bm90LApAQCAtMzE4LDcgKzMxOCw3IEBAIG9wIDpiaXRu
b3QsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFk
YXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZQorICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUuKgogICAgIH0KIAogb3BfZ3JvdXAgOlVuYXJ5T3AsCkBAIC0zNjMsNyArMzYz
LDcgQEAgb3AgOnRvX29iamVjdCwKICAgICAgICAgbWVzc2FnZTogdW5zaWduZWQsCiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3BfZ3JvdXAgOlZhbHVlUHJvZmls
ZWRVbmFyeU9wLApAQCAtMzc2LDcgKzM3Niw3IEBAIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkVW5h
cnlPcCwKICAgICAgICAgb3BlcmFuZDogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0
YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9wIDpuZWdhdGUsCkBAIC00NDUsNyArNDQ1LDcg
QEAgb3AgOmluX2J5X3ZhbCwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAg
ICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmlu
X2J5X2lkLApAQCAtNDc2LDggKzQ3Niw5IEBAIG9wIDpnZXRfYnlfaWQsCiAgICAgICAgIHByb3Bl
cnR5OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CisgICAgICAgIHByb2ZpbGU6
IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAog
ICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKIG9wIDpnZXRfYnlfaWRfd2l0aF90aGlzLApAQCAt
NDg4LDcgKzQ4OSw3IEBAIG9wIDpnZXRfYnlfaWRfd2l0aF90aGlzLAogICAgICAgICBwcm9wZXJ0
eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAog
b3AgOmdldF9ieV92YWxfd2l0aF90aGlzLApAQCAtNDk5LDcgKzUwMCw3IEBAIG9wIDpnZXRfYnlf
dmFsX3dpdGhfdGhpcywKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9
LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6Z2V0X2J5X2lkX2RpcmVj
dCwKQEAgLTUwOSw3ICs1MTAsNyBAQCBvcCA6Z2V0X2J5X2lkX2RpcmVjdCwKICAgICAgICAgcHJv
cGVydHk6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmls
ZTogVmFsdWVQcm9maWxlLCAjIG5vdCB1c2VkIGluIGxsaW50CisgICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZS4qLCAjIG5vdCB1c2VkIGluIGxsaW50CiAgICAgICAgIHN0cnVjdHVyZUlEOiBT
dHJ1Y3R1cmVJRCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKICAgICB9CkBAIC01MjAsNyAr
NTIxLDcgQEAgb3AgOmdldF9wcm90b3R5cGVfb2YsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnRy
eV9nZXRfYnlfaWQsCkBAIC01MzAsNyArNTMxLDcgQEAgb3AgOnRyeV9nZXRfYnlfaWQsCiAgICAg
ICAgIHByb3BlcnR5OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLios
CiAgICAgfQogCiBvcCA6cHV0X2J5X2lkLApAQCAtNTcxLDggKzU3Miw4IEBAIG9wIDpnZXRfYnlf
dmFsLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0
YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgICAgICBhcnJheVBy
b2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCisg
ICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIHNlZW5JZGVudGlm
aWVyczogR2V0QnlWYWxIaXN0b3J5LAogICAgIH0KIApAQCAtNTgzLDcgKzU4NCw3IEBAIG9wIDpn
ZXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICAgICAgc3RydWN0dXJlSUQ6IFN0cnVj
dHVyZUlELAogICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAogICAgICAgICBwcm9wZXJ0eTogV3Jp
dGVCYXJyaWVyW0pTQ2VsbF0sCkBAIC02MzIsNyArNjMzLDcgQEAgb3AgOnB1dF9ieV92YWwsCiAg
ICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFy
cmF5UHJvZmlsZS4qLAogICAgIH0KIAogb3AgOnB1dF9ieV92YWxfd2l0aF90aGlzLApAQCAtNjUy
LDcgKzY1Myw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgZWNtYU1vZGU6IEVD
TUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBB
cnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAg
fQogCiBvcCA6ZGVsX2J5X3ZhbCwKQEAgLTg0Miw3ICs4NDMsNyBAQCBvcCA6Y2FsbCwKICAgICB9
LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0lu
Zm8sCi0gICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLiosCiAgICAgfQogCiBvcCA6dGFpbF9jYWxsLApAQCAtODU0LDcgKzg1NSw3IEBA
IG9wIDp0YWlsX2NhbGwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlu
a0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmNhbGxfZXZh
bCwKQEAgLTg2Nyw3ICs4NjgsNyBAQCBvcCA6Y2FsbF9ldmFsLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgY2FsbExpbmtJbmZvOiBMTEludENhbGxMaW5rSW5mbywKLSAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwK
ICAgICB9CiAKIG9wIDpjYWxsX3ZhcmFyZ3MsCkBAIC04ODAsOCArODgxLDggQEAgb3AgOmNhbGxf
dmFyYXJncywKICAgICAgICAgZmlyc3RWYXJBcmc6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRh
OiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCisg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAgICAgdG1wczogewogICAg
ICAgICBhcmdDb3VudEluY2x1ZGluZ1RoaXM6IHVuc2lnbmVkLApAQCAtOTAxLDggKzkwMiw4IEBA
IG9wIDp0YWlsX2NhbGxfdmFyYXJncywKICAgICAgICAgZmlyc3RWYXJBcmc6IGludCwKICAgICB9
LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAot
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLiosCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgIH0sCiAg
ICAgdG1wczogewogICAgICAgICBhcmdDb3VudEluY2x1ZGluZ1RoaXM6IHVuc2lnbmVkCkBAIC05
MjIsOCArOTIzLDggQEAgb3AgOnRhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywKICAgICAgICAg
Zmlyc3RWYXJBcmc6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisg
ICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCisgICAgICAgIHByb2ZpbGU6IFZh
bHVlUHJvZmlsZS4qLAogICAgIH0KIAogb3AgOmNvbnN0cnVjdCwKQEAgLTkzNCw4ICs5MzUsOCBA
QCBvcCA6Y29uc3RydWN0LAogICAgICAgICBhcmd2OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1l
dGFkYXRhOiB7CisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAogICAgICAgICBjYWxs
TGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2Zp
bGUsCiAgICAgfQogCiBvcCA6Y29uc3RydWN0X3ZhcmFyZ3MsCkBAIC05NDgsOCArOTQ5LDggQEAg
b3AgOmNvbnN0cnVjdF92YXJhcmdzLAogICAgICAgICBmaXJzdFZhckFyZzogaW50LAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0g
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJh
eVByb2ZpbGUuKiwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosCiAgICAgfSwKICAg
ICB0bXBzOiB7CiAgICAgICAgIGFyZ0NvdW50SW5jbHVkaW5nVGhpczogdW5zaWduZWQKQEAgLTEw
MjgsNyArMTAyOSw3IEBAIG9wIDpnZXRfZnJvbV9zY29wZSwKICAgICAgICAgICAgIHN0cnVjdHVy
ZTogV3JpdGVCYXJyaWVyQmFzZVtTdHJ1Y3R1cmVdLAogICAgICAgICB9LAogICAgICAgICBvcGVy
YW5kOiB1aW50cHRyX3QsICNvZmZzZXQgNgotICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUs
ICMgb2Zmc2V0IDcKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLiosICMgb2Zmc2V0IDcK
ICAgICB9LAogICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewogICAgICAgICBnZXRQdXRJbmZv
OiA6Z2V0UHV0SW5mbywKQEAgLTEwNjUsNyArMTA2Niw3IEBAIG9wIDpnZXRfZnJvbV9hcmd1bWVu
dHMsCiAgICAgICAgIGluZGV4OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlLiosCiAgICAgfQogCiBvcCA6cHV0X3RvX2FyZ3VtZW50cywKQEAgLTExNzMsNyArMTE3NCw3
IEBAIG9wIDplbnVtZXJhdG9yX25leHQsCiAgICAgICAgIGVudW1lcmF0b3I6IFZpcnR1YWxSZWdp
c3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAg
ICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEx
ODcsOCArMTE4OCw4IEBAIG9wIDplbnVtZXJhdG9yX2dldF9ieV92YWwsCiAgICAgICAgIGVudW1l
cmF0b3I6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAg
IHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2Zp
bGUsCisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZS4qLAogICAgICAgICBlbnVtZXJhdG9yTWV0YWRhdGE6IEVudW1lcmF0
b3JNZXRhZGF0YSwKICAgICB9CiAKQEAgLTEyMDIsNyArMTIwMyw3IEBAIG9wIDplbnVtZXJhdG9y
X2luX2J5X3ZhbCwKICAgICAgICAgZW51bWVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0s
CiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisg
ICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLiosCiAgICAgICAgIGVudW1lcmF0b3JN
ZXRhZGF0YTogRW51bWVyYXRvck1ldGFkYXRhLAogICAgIH0KIApAQCAtMTIxNiw3ICsxMjE3LDcg
QEAgb3AgOmVudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSwKICAgICAgICAgZW51bWVyYXRvcjog
VmlydHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJyYXlQ
cm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LiosCiAgICAgICAgIGVudW1lcmF0b3JNZXRhZGF0YTogRW51bWVyYXRvck1ldGFkYXRhLAogICAg
IH0KIApAQCAtMTI0OCwxMiArMTI0OSwxMiBAQCBvcCA6aXRlcmF0b3Jfb3BlbiwKICAgICAgICAg
c3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKKyAgICAgICAg
aXRlcmFibGVQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgaXRlcmF0b3JQcm9maWxl
OiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAgICAgbmV4dFByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAog
ICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAg
ICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICAgICAgY2FsbExpbmtJbmZvOiBM
TEludENhbGxMaW5rSW5mbywKLSAgICAgICAgaXRlcmF0b3JQcm9maWxlOiBWYWx1ZVByb2ZpbGUs
CiAgICAgICAgIG1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKLSAgICAgICAgbmV4
dFByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LAogICAgIGNoZWNrcG9pbnRzOiB7CiAgICAg
ICAgIHN5bWJvbENhbGw6IG5pbCwKQEAgLTEyNzEsMTQgKzEyNzIsMTQgQEAgb3AgOml0ZXJhdG9y
X25leHQsCiAgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFk
YXRhOiB7CisgICAgICAgIG5leHRSZXN1bHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKKyAgICAg
ICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZS4qLAorICAgICAgICB2YWx1ZVByb2ZpbGU6IFZh
bHVlUHJvZmlsZS4qLAorICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZS4qLAog
ICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAg
ICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAgICAgY2FsbExpbmtJbmZvOiBM
TEludENhbGxMaW5rSW5mbywKLSAgICAgICAgbmV4dFJlc3VsdFByb2ZpbGU6IFZhbHVlUHJvZmls
ZSwKICAgICAgICAgZG9uZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKLSAgICAg
ICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICAgICAgdmFsdWVNb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgICAgIHZhbHVlUHJvZmlsZTogVmFsdWVQcm9maWxl
LAogICAgIH0sCiAgICAgdG1wczogewogICAgICAgICBuZXh0UmVzdWx0OiBKU1ZhbHVlLApAQCAt
MTMyMiw3ICsxMzIzLDcgQEAgb3AgOmdldF9pbnRlcm5hbF9maWVsZCwKICAgICAgICAgaW5kZXg6
IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUuKiwKICAgICB9CiAKIG9w
IDpwdXRfaW50ZXJuYWxfZmllbGQsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaAko
cmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDIwICs1Nywy
MCBAQCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvckltcGwoQnl0ZWNvCiAgICAgVU5VU0VE
X1BBUkFNKGNoZWNrcG9pbnRJbmRleCk7CiAgICAgaWYgY29uc3RleHByIChCeXRlY29kZU1ldGFk
YXRhOjpvcGNvZGVJRCA9PSBvcF9pdGVyYXRvcl9vcGVuKSB7CiAgICAgICAgIHN3aXRjaCAoY2hl
Y2twb2ludEluZGV4KSB7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck9wZW46OnN5bWJvbENhbGw6
IHJldHVybiAmbWV0YWRhdGEubV9pdGVyYXRvclByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVy
YXRvck9wZW46OmdldE5leHQ6IHJldHVybiAmbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKKyAgICAg
ICAgY2FzZSBPcEl0ZXJhdG9yT3Blbjo6c3ltYm9sQ2FsbDogcmV0dXJuIG1ldGFkYXRhLm1faXRl
cmF0b3JQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JPcGVuOjpnZXROZXh0OiByZXR1
cm4gbWV0YWRhdGEubV9uZXh0UHJvZmlsZTsKICAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCiAgICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAo
Qnl0ZWNvZGVNZXRhZGF0YTo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3JfbmV4dCkgewogICAgICAg
ICBzd2l0Y2ggKGNoZWNrcG9pbnRJbmRleCkgewotICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0
Ojpjb21wdXRlTmV4dDogcmV0dXJuICZtZXRhZGF0YS5tX25leHRSZXN1bHRQcm9maWxlOwotICAg
ICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXREb25lOiByZXR1cm4gJm1ldGFkYXRhLm1fZG9u
ZVByb2ZpbGU7Ci0gICAgICAgIGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldFZhbHVlOiByZXR1cm4g
Jm1ldGFkYXRhLm1fdmFsdWVQcm9maWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0Ojpj
b21wdXRlTmV4dDogcmV0dXJuIG1ldGFkYXRhLm1fbmV4dFJlc3VsdFByb2ZpbGU7CisgICAgICAg
IGNhc2UgT3BJdGVyYXRvck5leHQ6OmdldERvbmU6IHJldHVybiBtZXRhZGF0YS5tX2RvbmVQcm9m
aWxlOworICAgICAgICBjYXNlIE9wSXRlcmF0b3JOZXh0OjpnZXRWYWx1ZTogcmV0dXJuIG1ldGFk
YXRhLm1fdmFsdWVQcm9maWxlOwogICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIAotICAgICAgICByZXR1cm4gJm1ldGFk
YXRhLm1fcHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRhLm1fcHJvZmlsZTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGVNZXRhZGF0YT4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyODI0NjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzc0LDYgKzM3NCwxMCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhWTSYgdm0sIFN0cnVj
dHVyZSogCiBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKKyAgICAvLyBXZSBjYW4ndCBmaW5hbGl6ZSBh
IEdDIHdoaWxlIGluIGhlcmUgc2luY2Ugd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8KKyAgICAvLyBt
YWtlIHN1cmUgb3VyIFZhbHVlUHJvZmlsZXMgYW5kIEFycmF5UHJvZmlsZXMgYWxsIHBvaW50IHRv
IHByb3BlciBsb2NhdGlvbnMuCisgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5pc0RlZmVycmVk
KCkpOyAKKwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBmaW5pc2hDcmVhdGlv
bkNvbW1vbih2bSk7CiAKQEAgLTM4Myw4ICszODcsMTEgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUo
KS0+cmVtb3ZlVW5leGVjdXRlZFJhbmdlKG93bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgb3du
ZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQodm0pLCBvd25lckV4ZWN1dGFi
bGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQodm0pKTsKIAogICAgIFNjcmlwdEV4ZWN1dGFibGUq
IHRvcExldmVsRXhlY3V0YWJsZSA9IG93bmVyRXhlY3V0YWJsZS0+dG9wTGV2ZWxFeGVjdXRhYmxl
KCk7Ci0gICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50
UmVnaXN0ZXJzKCksIHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb24oKSwgdG9wTGV2ZWxFeGVjdXRhYmxlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKKworICAgIC8vIFdlIHdhaXQgdG8gaW5pdGlhbGl6ZSB0ZW1w
bGF0ZSBvYmplY3RzIHVudGlsIHRoZSBlbmQgb2YgZmluaXNoQ3JlYXRpb24gYmVlY2F1c2UgaXQg
Y2FuCisgICAgLy8gdGhyb3cuIFdlIHJlbHkgb24gbGlua2luZyB0byBwdXQgdGhlIENvZGVCbG9j
ayBpbnRvIGEgY29oZXJlbnQgc3RhdGUsIHNvIHdlIGNhbid0IHRocm93CisgICAgLy8gdW50aWwg
d2UncmUgYWxsIGRvbmUgbGlua2luZy4KKyAgICBWZWN0b3I8dW5zaWduZWQ+IHRlbXBsYXRlT2Jq
ZWN0SW5kaWNlcyA9IHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25z
dGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uKCkpOwogCiAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBjbG9uZWQgc3lt
Ym9sIHRhYmxlIGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IHNpbmNlIHdlIG5lZWQgdG8gaW5z
dGFudGlhdGUKICAgICAvLyB0aGUgbW9kdWxlIGVudmlyb25tZW50cyBiZWZvcmUgbGlua2luZyB0
aGUgY29kZSBibG9jay4gV2UgcmVwbGFjZSB0aGUgc3RvcmVkIHN5bWJvbCB0YWJsZSB3aXRoIHRo
ZSBhbHJlYWR5IGNsb25lZCBvbmUuCkBAIC00MzUsNyArNDQyLDggQEAgYm9vbCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSBy
ZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVsZUVudmly
b25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCi0gICAgYXV0
byBsaW5rX3Byb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRvIC8q
Ynl0ZWNvZGUqLywgYXV0byYgLyptZXRhZGF0YSovKSB7CisgICAgYXV0byBsaW5rX3Byb2ZpbGUg
PSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0
byYgbWV0YWRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxWYWx1
ZVByb2ZpbGUqLCBkZWNsdHlwZShtZXRhZGF0YS5tX3Byb2ZpbGUpPik7CiAgICAgICAgIG1fbnVt
YmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICB9OwogCkBAIC00OTksOSArNTA3
LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogCiAgICAgICAg
IExJTksoT3BHZXRCeUlkLCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BFbnVtZXJhdG9yTmV4
dCwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcEVudW1lcmF0b3JJbkJ5VmFsLCBwcm9maWxlKQot
ICAgICAgICBMSU5LKE9wRW51bWVyYXRvckhhc093blByb3BlcnR5LCBwcm9maWxlKQorICAgICAg
ICBMSU5LKE9wRW51bWVyYXRvck5leHQpCisgICAgICAgIExJTksoT3BFbnVtZXJhdG9ySW5CeVZh
bCkKKyAgICAgICAgTElOSyhPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSkKICAgICAgICAgTElO
SyhPcEVudW1lcmF0b3JHZXRCeVZhbCwgcHJvZmlsZSkKIAogICAgICAgICBMSU5LKE9wQ2FsbCwg
cHJvZmlsZSkKQEAgLTU2Myw3ICs1NzEsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChieXRlY29kZS5tX3Jlc29s
dmVUeXBlICE9IFJlc29sdmVkQ2xvc3VyZVZhcik7CiAKICAgICAgICAgICAgIFJlc29sdmVPcCBv
cCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNv
ZGUubV9sb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX3Jlc29s
dmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCiAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gb3AudHlwZTsKICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fbG9jYWxTY29wZURlcHRoID0gb3AuZGVwdGg7CkBAIC01OTgsNyArNjA1LDYgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogCiAgICAgICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwogICAgICAgICAg
ICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0
LmdldCgpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIGJ5
dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5v
dEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogCiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQ
dXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBieXRl
Y29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0
SW5mby5lY21hTW9kZSgpKTsKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikK
QEAgLTYzMiw3ICs2MzgsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTCiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIoYnl0
ZWNvZGUubV92YXIpOwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gbnVs
bHB0cjsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2
ZShtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnl0ZWNvZGUubV9zeW1ib2xUYWJsZU9yU2NvcGVEZXB0
aC5zY29wZURlcHRoKCksIHNjb3BlLCBpZGVudCwgUHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8u
cmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBieXRlY29kZS5tX2dldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgp
KTsKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IEdsb2JhbFZhciB8fCBvcC50eXBlID09IEds
b2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2Fs
VmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Mp
CkBAIC02NjUsNyArNjcwLDYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgUwogICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHR5cGUgcHJvZmlsaW5nIG1heSBi
ZSBwcm9maWxpbmcgZWl0aGVyIGEgR2V0IG9yIGEgUHV0LCB3ZSBjYW4gYWx3YXlzIGNsYWltIGEg
R2V0IGJlY2F1c2UKICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBhYnN0cmFjdGx5ICJyZWFkImlu
ZyBmcm9tIGEgSlNTY29wZS4KICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3Bl
OjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QuZ2V0KCksIGxvY2FsU2NvcGVEZXB0aCwg
c2NvcGUsIGlkZW50LCBHZXQsIGJ5dGVjb2RlLm1fcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9u
TW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwotICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCiAgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUg
PT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVsZVZhcikKICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CkBA
IC03NjEsNiArNzY1LDU2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFMKICN1bmRlZiBMSU5LX0ZJRUxECiAjdW5kZWYgTElOSwogCisgICAgeworICAgICAgICB1bnNp
Z25lZCBpbmRleCA9IG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7IC8vIFRoZSBmaXJz
dCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpIHByb2ZpbGVzIGFyZSBhcmd1bWVudCB2
YWx1ZSBwcm9maWxlcworCisgICAgICAgIGlmIChtX21ldGFkYXRhKSB7CisgICAgICAgICAgICBh
dXRvIGFzc2lnbiA9IFsmXSAoVmFsdWVQcm9maWxlKiYgcHJvZmlsZSkgeworICAgICAgICAgICAg
ICAgIHByb2ZpbGUgPSAmdW5saW5rZWRDb2RlQmxvY2stPnZhbHVlUHJvZmlsZShpbmRleCsrKTsK
KyAgICAgICAgICAgIH07CisKKyNkZWZpbmUgVklTSVQoX19vcCkgXAorICAgICAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGFzc2lnbihtZXRh
ZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZB
TFVFX1BST0ZJTEUoVklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICAgICAgbV9tZXRhZGF0
YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKKyAgICAg
ICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICAg
ICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX2l0ZXJhdG9yUHJvZmlsZSk7CisgICAgICAgICAgICAg
ICAgYXNzaWduKG1ldGFkYXRhLm1fbmV4dFByb2ZpbGUpOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKKyAgICAgICAgICAgICAgICBhc3NpZ24obWV0YWRhdGEubV9uZXh0UmVzdWx0
UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgYXNzaWduKG1ldGFkYXRhLm1fZG9uZVByb2ZpbGUp
OworICAgICAgICAgICAgICAgIGFzc2lnbihtZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09
IHVubGlua2VkQ29kZUJsb2NrLT5udW1WYWx1ZVByb2ZpbGVzKCkpOworICAgIH0KKworICAgIGlm
IChtX21ldGFkYXRhKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKworICAgICAgICBh
dXRvIGFzc2lnbiA9IFsmXSAoQXJyYXlQcm9maWxlKiYgcHJvZmlsZSkgeworICAgICAgICAgICAg
cHJvZmlsZSA9ICZ1bmxpbmtlZENvZGVCbG9jay0+YXJyYXlQcm9maWxlKGluZGV4KyspOworICAg
ICAgICB9OworCisgICAgICAgIC8vIFdlIG9ubHkgc2hhcmUgYXJyYXkgcHJvZmlsZXMgZm9yIHRo
ZSBvcGNvZGVzIGluIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUuCisgICAgICAg
IC8vIFdlIGRvbid0IHlldCBzaGFyZSBhcnJheSBwcm9maWxlcyBmb3IgdGhpbmdzIHdpdGggTExJ
bnQgQ2FsbExpbmtJbmZvcy4KKyNkZWZpbmUgVklTSVQoX19vcCkgXAorICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgYXNzaWduKG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKTsgfSk7CisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZ
X1BST0ZJTEUoVklTSVQpCisjdW5kZWYgVklTSVQKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wSXRlcmF0b3JOZXh0PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBh
c3NpZ24obWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOworICAgICAgICB9KTsKKworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtQXJyYXlQcm9m
aWxlcygpKTsKKyAgICB9CisKICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0
aENvbnRyb2xGbG93UHJvZmlsZXJPcGNvZGVzKCkpCiAgICAgICAgIGluc2VydEJhc2ljQmxvY2tC
b3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcigpOwogCkBAIC03ODEsNiArODM1LDkgQEAg
Ym9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgIGlmIChtX21ldGFk
YXRhKQogICAgICAgICB2bS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1fbWV0YWRh
dGEtPnNpemVJbkJ5dGVzKCkpOwogCisgICAgaW5pdGlhbGl6ZVRlbXBsYXRlT2JqZWN0cyh0b3BM
ZXZlbEV4ZWN1dGFibGUsIHRlbXBsYXRlT2JqZWN0SW5kaWNlcyk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
ODY5LDE5ICs5MjYsMjAgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogfQogCi12b2lkIENvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3Qg
Rml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRzLCBjb25zdCBGaXhl
ZFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24sIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSkKK1ZlY3Rv
cjx1bnNpZ25lZD4gQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBGaXhlZFZl
Y3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IEZpeGVkVmVjdG9y
PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbikKIHsKICAgICBWTSYgdm0gPSAqbV92bTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ2xv
YmFsT2JqZWN0LmdldCgpOwogCisgICAgVmVjdG9yPHVuc2lnbmVkPiB0ZW1wbGF0ZU9iamVjdElu
ZGljZXM7CisKICAgICBBU1NFUlQoY29uc3RhbnRzLnNpemUoKSA9PSBjb25zdGFudHNTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb24uc2l6ZSgpKTsKLSAgICBzaXplX3QgY291bnQgPSBjb25zdGFudHMu
c2l6ZSgpOworICAgIHVuc2lnbmVkIGNvdW50ID0gY29uc3RhbnRzLnNpemUoKTsKICAgICB7CiAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVycy5yZXNpemVUb0ZpdChjb3VudCk7CiAgICAgfQotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7CiAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBjb25zdGFudHNbaV0uZ2V0
KCk7CiAgICAgICAgIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbiA9IGNv
bnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpXTsKICAgICAgICAgc3dpdGNoIChyZXBy
ZXNlbnRhdGlvbikgewpAQCAtOTA1LDE3ICs5NjMsMjcgQEAgdm9pZCBDb2RlQmxvY2s6OnNldENv
bnN0YW50UmVnaXN0ZXJzKGNvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLT5z
ZXRSYXJlRGF0YUNvZGVCbG9jayh0aGlzKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3RhbnQgPSBjbG9uZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBkZXNj
cmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KHZtLCBj
ZWxsKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0
b3BMZXZlbEV4ZWN1dGFibGUtPmNyZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCwgZGVz
Y3JpcHRvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0
ZU9iamVjdDsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2Vs
bCkpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZU9iamVjdEluZGljZXMuYXBwZW5k
KGkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uc2V0KHZtLCB0aGlz
LCBjb25zdGFudCk7CiAgICAgfQorCisgICAgcmV0dXJuIHRlbXBsYXRlT2JqZWN0SW5kaWNlczsK
K30KKwordm9pZCBDb2RlQmxvY2s6OmluaXRpYWxpemVUZW1wbGF0ZU9iamVjdHMoU2NyaXB0RXhl
Y3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiB0ZW1w
bGF0ZU9iamVjdEluZGljZXMpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0oKSk7CisgICAgZm9yICh1bnNpZ25lZCBpIDogdGVtcGxhdGVPYmplY3RJbmRpY2VzKSB7
CisgICAgICAgIGF1dG8qIGRlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IqPihtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmdldCgpKTsKKyAgICAgICAgYXV0byogdGVt
cGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFibGUtPmNyZWF0ZVRlbXBsYXRlT2JqZWN0KGds
b2JhbE9iamVjdCgpLCBkZXNjcmlwdG9yKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQodm0oKSwg
dGhpcywgdGVtcGxhdGVPYmplY3QpOworICAgIH0KIH0KIAogdm9pZCBDb2RlQmxvY2s6OnNldEFs
dGVybmF0aXZlKFZNJiB2bSwgQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSkKQEAgLTkyOCw4ICs5OTYs
NiBAQCB2b2lkIENvZGVCbG9jazo6c2V0QWx0ZXJuYXRpdmUoVk0mIHZtLCBDCiB2b2lkIENvZGVC
bG9jazo6c2V0TnVtUGFyYW1ldGVycyh1bnNpZ25lZCBuZXdWYWx1ZSkKIHsKICAgICBtX251bVBh
cmFtZXRlcnMgPSBuZXdWYWx1ZTsKLQotICAgIG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gRml4
ZWRWZWN0b3I8VmFsdWVQcm9maWxlPihPcHRpb25zOjp1c2VKSVQoKSA/IG5ld1ZhbHVlIDogMCk7
CiB9CiAKIENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgp
CkBAIC05OTAsNyArMTA1Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKFZpc2l0
b3ImIHYKICAgICBzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyhsb2NrZXIsIHZpc2l0b3Ip
OwogICAgIHN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlcyhsb2NrZXIsIHZpc2l0b3IpOwogICAg
IAotICAgIFZNOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKS5hZGQodGhpcyk7Cisg
ICAgdm0oKS5jb2RlQmxvY2tTcGFjZS5zZXQuYWRkKHRoaXMpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBWaXNpdG9yPgpAQCAtMTUxNyw3ICsxNTgzLDM1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSgKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogCi0gICAgdXBk
YXRlQWxsUHJlZGljdGlvbnMoKTsKKyAgICB7CisgICAgICAgIC8vIFdlIG9ubHkgdXBkYXRlIHRo
ZSBwcm9maWxlcyB0aGF0IHRoZSBVbmxpbmtlZENvZGVCbG9jayBkb2Vzbid0IG93bi4KKworICAg
ICAgICBpZiAobV9tZXRhZGF0YSkgeworI2RlZmluZSBVUERBVEUoX19vcCkgXAorICAgICAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IG1ldGFk
YXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bih0aGlzKTsgfSk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxM
X0xJTktfSU5GTyhVUERBVEUpCisjdW5kZWYgVVBEQVRFCisKKyAgICAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BDYXRjaD4oWyZdKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1ldGFkYXRhLm1fYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fYnVmZmVyLT5mb3JFYWNoKFsmXShWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXImIHBy
b2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOworI2lmIEVOQUJMRShERkdfSklUKQorICAg
ICAgICAgICAgbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzKGxvY2tlcikuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9ucyhsb2NrZXIpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBmb3JFYWNo
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZShbJl0oQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSYgcHJvZmls
ZSkgeworICAgICAgICAgICAgcHJvZmlsZS51cGRhdGVQcm9maWxlKCk7CisgICAgICAgIH0pOwor
ICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgYm9vbCBpc0VsaWdpYmxlRm9yTExJbnREb3du
Z3JhZGUgPSBtX2lzRWxpZ2libGVGb3JMTEludERvd25ncmFkZTsKQEAgLTE2MDMsNyArMTY5Nyw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICB9OwogICAg
IHVwZGF0ZUFjdGl2aXR5KCk7CiAKLSAgICBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3Bh
Y2UoKSkucmVtb3ZlKHRoaXMpOworICAgIHZtLmNvZGVCbG9ja1NwYWNlLnNldC5yZW1vdmUodGhp
cyk7CiAKICAgICAvLyBJbiBDb2RlQmxvY2s6OnNob3VsZFZpc2l0U3Ryb25nbHkoKSB3ZSBtYXkg
aGF2ZSBkZWNpZGVkIHRvIHNraXAgdmlzaXRpbmcgdGhpcwogICAgIC8vIGNvZGVCbG9jay4gQnkg
dGhlIHRpbWUgd2UgZ2V0IGhlcmUsIHdlJ3JlIGRvbmUgd2l0aCB0aGUgdmVyaWZpZXIgR0MuIFNv
LCBsZXQncwpAQCAtMjc3Myw3ICsyODY3LDcgQEAgQXJyYXlQcm9maWxlKiBDb2RlQmxvY2s6Omdl
dEFycmF5UHJvZmlsZQogICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKICNk
ZWZpbmUgQ0FTRTEoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAotICAgICAgICByZXR1
cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FycmF5UHJvZmlsZTsK
KyAgICAgICAgcmV0dXJuIGluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX2Fy
cmF5UHJvZmlsZTsKIAogI2RlZmluZSBDQVNFMihPcCkgXAogICAgIGNhc2UgT3A6Om9wY29kZUlE
OiBcCkBAIC0yNzg1LDEzICsyODc5LDYgQEAgQXJyYXlQcm9maWxlKiBDb2RlQmxvY2s6OmdldEFy
cmF5UHJvZmlsZQogI3VuZGVmIENBU0UxCiAjdW5kZWYgQ0FTRTIKIAotICAgIGNhc2UgT3BHZXRC
eUlkOjpvcGNvZGVJRDogewotICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZD4oKTsKLSAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YSh0aGlzKTsKLSAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0
QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlOwotICAgICAgICBicmVhazsK
LSAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjkwMCwxOSAr
Mjk4NywxOSBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAgICAg
ICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdl
IGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBt
b3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1w
bGVzOwogICAgICAgICBpZiAoaXNBcmd1bWVudCkgewotICAgICAgICAgICAgcHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgIHByb2ZpbGUuY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHByb2ZpbGUubnVtYmVyT2ZTYW1wbGVzKCkgfHwgcHJvZmlsZS5pc1NhbXBsZWRC
ZWZvcmUoKSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwotICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwor
ICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwogICAgIH0pOwogCiAg
ICAgaWYgKG1fbWV0YWRhdGEpIHsKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcENhdGNo
PihbJl0oYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX2J1ZmZl
cikgewogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fYnVmZmVyLT5mb3JFYWNoKFsmXShWYWx1
ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXImIHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CkBAIC0yOTMxLDEwICszMDE4LDgg
QEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZQogCiB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsQXJyYXlQcmVkaWN0aW9ucygpCiB7Ci0gICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwotICAgIAogICAgIGZvckVhY2hBcnJheVByb2ZpbGUoWyZdKEFy
cmF5UHJvZmlsZSYgcHJvZmlsZSkgewotICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIsIHRoaXMpOworICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbih0aGlzKTsKICAgICB9KTsKICAgICAKICAgICBmb3JFYWNoQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZShbJl0oQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSYgcHJvZmlsZSkgewpAQCAtMzE2NCw3
ICszMjQ5LDcgQEAgVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnRyeUdldFZhbHVlUHJvZgogCiAj
ZGVmaW5lIENBU0UoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAotICAgICAgICByZXR1
cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX3Byb2ZpbGU7CisgICAg
ICAgIHJldHVybiBpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9wcm9maWxl
OwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoQ0FTRSkKIApA
QCAtMzE4MSwxMCArMzI2NiwxMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dHJ5R2V0VmFs
dWVQcm9mCiAgICAgfQogfQogCi1TcGVjdWxhdGVkVHlwZSBDb2RlQmxvY2s6OnZhbHVlUHJvZmls
ZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9j
a2VyLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitTcGVjdWxhdGVkVHlwZSBDb2RlQmxv
Y2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCkKIHsKICAgICBpZiAoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGUgPSB0
cnlHZXRWYWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpKQotICAgICAg
ICByZXR1cm4gdmFsdWVQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7
CiAgICAgcmV0dXJuIFNwZWNOb25lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsx
NDQsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkNvZGVCbG9jaygpOwogCiAg
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZENvZGUuZ2V0KCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVW5s
aW5rZWRDb2RlQmxvY2soKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX3Vu
bGlua2VkQ29kZSk7IH0KIAogICAgIENTdHJpbmcgaW5mZXJyZWROYW1lKCkgY29uc3Q7CiAgICAg
Q29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7CkBAIC00NzQsMTkgKzQ3NSwxNiBAQCBwdWJsaWM6
CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX251bVBhcmFtZXRlcnMpIHx8ICFPcHRpb25zOjp1c2VKSVQoKSk7Ci0g
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50VmFsdWVQcm9maWxlcy5zaXplKCk7CisgICAgICAgIHJl
dHVybiBudW1QYXJhbWV0ZXJzKCk7CiAgICAgfQogCiAgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVBy
b2ZpbGVGb3JBcmd1bWVudCh1bnNpZ25lZCBhcmd1bWVudEluZGV4KQogICAgIHsKLSAgICAgICAg
QVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBmcm9tIHRo
ZSB2YXJpb3VzIEpJVCBjb21waWxlcnMgb3IgcGxhY2VzIHRoYXQgZmlyc3QgY2hlY2sgbnVtYmVy
T2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMgYmVmb3JlIGNhbGxpbmcgdGhpcy4KLSAgICAgICAgVmFs
dWVQcm9maWxlJiByZXN1bHQgPSBtX2FyZ3VtZW50VmFsdWVQcm9maWxlc1thcmd1bWVudEluZGV4
XTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJs
b2NrKCktPnZhbHVlUHJvZmlsZShhcmd1bWVudEluZGV4KTsKICAgICB9CiAKICAgICBWYWx1ZVBy
b2ZpbGUmIHZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7Ci0gICAg
U3BlY3VsYXRlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7CisgICAgU3BlY3VsYXRlZFR5
cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hWYWx1ZVByb2Zp
bGUoY29uc3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJik7CkBAIC04ODYsNyArODg0LDggQEAg
cHVibGljOgogICAgIE1ldGFkYXRhJiBtZXRhZGF0YShPcGNvZGVJRCBvcGNvZGVJRCwgdW5zaWdu
ZWQgbWV0YWRhdGFJRCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhKTsKLSAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNZXRhZGF0YSo+KG1fbWV0YWRhdGEtPmdldChvcGNvZGVJ
RCkpW21ldGFkYXRhSURdOworICAgICAgICBBU1NFUlRfVU5VU0VEKG9wY29kZUlELCBvcGNvZGVJ
RCA9PSBNZXRhZGF0YTo6b3Bjb2RlSUQpOworICAgICAgICByZXR1cm4gbV9tZXRhZGF0YS0+Z2V0
PE1ldGFkYXRhPigpW21ldGFkYXRhSURdOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE1ldGFkYXRhPgpAQCAtOTM5LDcgKzkzOCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0
ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVt
YmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1w
bGVzSW5Qcm9maWxlcyk7CiAKLSAgICB2b2lkIHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IEZp
eGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgRml4ZWRW
ZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiYgY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUpOworICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgRml4ZWRWZWN0b3I8V3Jp
dGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRzLCBjb25zdCBGaXhlZFZlY3RvcjxTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pOwor
ICAgIHZvaWQgaW5pdGlhbGl6ZVRlbXBsYXRlT2JqZWN0cyhTY3JpcHRFeGVjdXRhYmxlKiB0b3BM
ZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mKTsKIAogICAgIHZvaWQgcmVw
bGFjZUNvbnN0YW50KFZpcnR1YWxSZWdpc3RlciByZWcsIEpTVmFsdWUgdmFsdWUpCiAgICAgewpA
QCAtMTAxNSw3ICsxMDE1LDYgQEAgcHJpdmF0ZToKICAgICAvLyBmb3IgREZHIGNvZGUgYmxvY2tz
LgogICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciBtX2xhenlPcGVy
YW5kVmFsdWVQcm9maWxlczsKICNlbmRpZgotICAgIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4g
bV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAKICAgICAvLyBDb25zdGFudCBQb29sCiAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KSwgUmVnaXN0ZXJfbXVzdF9iZV9zYW1lX3NpemVfYXNfV3JpdGVCYXJyaWVyX1Vua25vd24p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjIg
QEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29ucwogCiAgICAgaWYgKG1f
bWV0YWRhdGEpIHsKICNkZWZpbmUgVklTSVQoX19vcCkgXAotICAgICAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2Zp
bGUsIGZhbHNlKTsgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChh
dXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAK
ICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShWSVNJVCkKIAogI3Vu
ZGVmIFZJU0lUCiAKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yT3Blbj4o
WyZdIChhdXRvJiBtZXRhZGF0YSkgeyAKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVy
YWJsZVByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYXRv
clByb2ZpbGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9uZXh0UHJvZmls
ZSwgZmFsc2UpOworICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUs
IGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmMoKm1ldGFkYXRhLm1faXRlcmF0b3JQcm9maWxlLCBm
YWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRQcm9maWxlLCBmYWxzZSk7
CiAgICAgICAgIH0pOwogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5l
eHQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9u
ZXh0UmVzdWx0UHJvZmlsZSwgZmFsc2UpOwotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2Rv
bmVQcm9maWxlLCBmYWxzZSk7Ci0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fdmFsdWVQcm9m
aWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX25leHRSZXN1bHRQcm9m
aWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX2RvbmVQcm9maWxlLCBm
YWxzZSk7CisgICAgICAgICAgICBmdW5jKCptZXRhZGF0YS5tX3ZhbHVlUHJvZmlsZSwgZmFsc2Up
OwogICAgICAgICB9KTsKICAgICB9ICAgCiAKQEAgLTY0LDEzICs2NCw4IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25z
dCBGdW5jdG9yJiBmdW5jKQogewogICAgIGlmIChtX21ldGFkYXRhKSB7Ci0gICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAg
ICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJy
YXlMZW5ndGgpCi0gICAgICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKLSAgICAgICAgfSk7Ci0KICNkZWZpbmUgVklT
SVQxKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKCptZXRhZGF0YS5t
X2FycmF5UHJvZmlsZSk7IH0pOwogCiAjZGVmaW5lIFZJU0lUMihfX29wKSBcCiAgICAgbV9tZXRh
ZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEu
bV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKQEAgLTgyLDcgKzc3LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUoY29ucwogI3VuZGVmIFZJU0lUMgogCiAg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwor
ICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwogICAgICAgICB9
KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhp
dFByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5jcHAJKHJldmlzaW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDYgKzg5LDE5IEBAIFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPiBFeGl0UHJvZmlsZTo6ZXgKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIEV4aXRQcm9maWxlOjpoYXNBbnlFeGl0c0F0KGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fZnJlcXVlbnRFeGl0U2l0ZXMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZyZXF1ZW50RXhpdFNpdGVzLT5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9mcmVxdWVudEV4aXRTaXRlcy0+YXQoaSkuYnl0
ZWNvZGVJbmRleCgpID09IGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXhpdFByb2ZpbGU6Omhhc0V4
aXRTaXRlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUm
IHNpdGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyZXF1ZW50RXhpdFNpdGVzKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlz
aW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDggQEAgcHVibGljOgogICAgIC8v
IEdldCB0aGUgZnJlcXVlbnQgZXhpdCBzaXRlcyBmb3IgYSBieXRlY29kZSBpbmRleC4gVGhpcyBp
cyBPKG4pLCBhbmQgaXMKICAgICAvLyBtZWFudCB0byBvbmx5IGJlIHVzZWQgZnJvbSBkZWJ1Z2dp
bmcvcHJvZmlsaW5nIGNvZGUuCiAgICAgVmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+IGV4aXRTaXRl
c0ZvcihCeXRlY29kZUluZGV4KTsKKworICAgIGJvb2wgaGFzQW55RXhpdHNBdChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeXRlY29kZUluZGV4KSBjb25zdDsKICAgICAKICAgICAvLyBUaGlz
IGlzIE8obikgYW5kIHNob3VsZCBiZSBjYWxsZWQgb24gbGVzcy1mcmVxdWVudGx5IGV4ZWN1dGVk
IGNvZGUgcGF0aHMKICAgICAvLyBpbiB0aGUgY29tcGlsZXIuIEl0IHNob3VsZCBiZSBzdHJpY3Rs
eSBjaGVhcGVyIHRoYW4gYnVpbGRpbmcgYQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAkocmV2aXNpb24gMjgyNDY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCwxMSArNDgsNiBAQCBzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YVVuc2V0IHsK
IH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQpID09IDEy
KTsKIAotc3RydWN0IEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCB7Ci0gICAgQXJyYXlQ
cm9maWxlIGFycmF5UHJvZmlsZTsKLX07Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9k
ZU1ldGFkYXRhQXJyYXlMZW5ndGgpID09IDEyKTsKLQogc3RydWN0IEdldEJ5SWRNb2RlTWV0YWRh
dGFQcm90b0xvYWQgewogICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOwogICAgIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldDsKQEAgLTkwLDcgKzg1LDYgQEAgdW5pb24gR2V0QnlJZE1vZGVN
ZXRhZGF0YSB7CiAgICAgfTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0
TW9kZTsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgdW5zZXRNb2RlOwotICAgIEdldEJ5
SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCBhcnJheUxlbmd0aE1vZGU7CiAgICAgR2V0QnlJZE1v
ZGVNZXRhZGF0YVByb3RvTG9hZCBwcm90b0xvYWRNb2RlOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGEpID09IDE2KTsKQEAgLTExMyw3ICsxMDcsNiBAQCBzdHJ1
Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YSB7CiAgICAgdW5pb24gewogICAgICAgICBHZXRCeUlkTW9k
ZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0TW9kZTsKICAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0
YVVuc2V0IHVuc2V0TW9kZTsKLSAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3Ro
IGFycmF5TGVuZ3RoTW9kZTsKICAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCBw
cm90b0xvYWRNb2RlOwogICAgIH07CiAgICAgR2V0QnlJZE1vZGUgbW9kZTsKQEAgLTEzNyw3ICsx
MzAsNiBAQCBpbmxpbmUgdm9pZCBHZXRCeUlkTW9kZU1ldGFkYXRhOjpzZXRVbnNlCiBpbmxpbmUg
dm9pZCBHZXRCeUlkTW9kZU1ldGFkYXRhOjpzZXRBcnJheUxlbmd0aE1vZGUoKQogewogICAgIG1v
ZGUgPSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7Ci0gICAgbmV3ICgmYXJyYXlMZW5ndGhNb2Rl
LmFycmF5UHJvZmlsZSkgQXJyYXlQcm9maWxlOwogICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlw
ZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgogICAgIGhpdENvdW50Rm9yTExJbnRDYWNoaW5n
ID0gMDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMjgyNDY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogQ29t
cHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXIoKSB7IH0KIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlcjo6fkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigpIHsg
fQogCi12b2lkIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikKK3Zv
aWQgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAgaWYgKCFtX2Rh
dGEpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9kYXRhLT5zaXplKCk7ICsraSkKLSAgICAgICAgbV9kYXRhLT5hdChpKS5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgbV9kYXRhLT5hdChpKS5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24oKTsKIH0KIAogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKApAQCAtODcsMTMgKzg3LDEzIEBAIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlKiBMYXp5T3BlcmFuZFZhbHUKIH0KIAogU3BlY3VsYXRlZFR5
cGUgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OnByZWRpY3Rpb24oCi0gICAgY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5JiBrZXkpIGNvbnN0CisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgY29uc3QgTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKIHsKICAgICBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldElmUHJlc2VudChrZXkpOwogICAgIGlmICghcHJvZmls
ZSkKICAgICAgICAgcmV0dXJuIFNwZWNOb25lOwogICAgIAotICAgIHJldHVybiBwcm9maWxlLT5j
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICByZXR1cm4gcHJvZmlsZS0+Y29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAko
cmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFk
YXRhVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCwxMSBAQCBzdHJ1Y3QgRGVh
bGxvY1RhYmxlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICBzdGF0aWMgdm9pZCB3
aXRoT3Bjb2RlVHlwZShNZXRhZGF0YVRhYmxlKiB0YWJsZSkKICAgICB7Ci0gICAgICAgIHRhYmxl
LT5mb3JFYWNoPE9wPihbXShhdXRvJiBlbnRyeSkgewotICAgICAgICAgICAgZW50cnkufk1ldGFk
YXRhKCk7Ci0gICAgICAgIH0pOworICAgICAgICBpZiBjb25zdGV4cHIgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihPcDo6b3Bjb2RlSUQpIDwgTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEEp
IHsKKyAgICAgICAgICAgIHRhYmxlLT5mb3JFYWNoPE9wPihbXShhdXRvJiBlbnRyeSkgeworICAg
ICAgICAgICAgICAgIGVudHJ5Ln5NZXRhZGF0YSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRhZGF0YVRhYmxlLmgJKHJldmlzaW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE4ICs0
NiwyMiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKIHB1YmxpYzoKICAgICB+TWV0YWRhdGFUYWJs
ZSgpOwogCi0gICAgQUxXQVlTX0lOTElORSBJbnN0cnVjdGlvbjo6TWV0YWRhdGEqIGdldChPcGNv
ZGVJRCBvcGNvZGVJRCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KKyAgICBBTFdB
WVNfSU5MSU5FIE1ldGFkYXRhKiBnZXQoKQogICAgIHsKKyAgICAgICAgYXV0byBvcGNvZGVJRCA9
IE1ldGFkYXRhOjpvcGNvZGVJRDsKICAgICAgICAgQVNTRVJUKG9wY29kZUlEIDwgTlVNQkVSX09G
X0JZVEVDT0RFX1dJVEhfTUVUQURBVEEpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxJbnN0cnVjdGlvbjo6TWV0YWRhdGEqPihnZXRJbXBsKG9wY29kZUlEKSk7CisgICAgICAgIHVp
bnRwdHJfdCBwdHIgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihnZXRXaXRob3V0QWxpZ25pbmco
b3Bjb2RlSUQpKTsKKyAgICAgICAgcHRyID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKE1l
dGFkYXRhKSwgcHRyKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNZXRhZGF0YSo+KHB0
cik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEZ1bmN0b3I+
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZvckVhY2goY29uc3QgRnVuY3RvciYgZnVuYykKICAg
ICB7Ci0gICAgICAgIGF1dG8qIG1ldGFkYXRhID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpN
ZXRhZGF0YSo+KGdldChPcDo6b3Bjb2RlSUQpKTsKLSAgICAgICAgYXV0byogZW5kID0gYml0d2lz
ZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldEltcGwoT3A6Om9wY29kZUlEICsgMSkp
OwotICAgICAgICBmb3IgKDsgbWV0YWRhdGEgKyAxIDw9IGVuZDsgKyttZXRhZGF0YSkKKyAgICAg
ICAgYXV0byogbWV0YWRhdGEgPSBnZXQ8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhPigpOworICAgICAg
ICBhdXRvKiBlbmQgPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhKj4oZ2V0V2l0
aG91dEFsaWduaW5nKE9wOjpvcGNvZGVJRCArIDEpKTsKKyAgICAgICAgZm9yICg7IG1ldGFkYXRh
IDwgZW5kOyArK21ldGFkYXRhKQogICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEpOwogICAgIH0K
IApAQCAtMTE2LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBvZmZzZXRUYWJs
ZTMyKClbaV07CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1aW50OF90KiBnZXRJbXBsKHVu
c2lnbmVkIGkpCisgICAgQUxXQVlTX0lOTElORSB1aW50OF90KiBnZXRXaXRob3V0QWxpZ25pbmco
dW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+
KHRoaXMpICsgZ2V0T2Zmc2V0KGkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBA
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXgKICAgICBtYWNybyhPcEVu
dW1lcmF0b3JHZXRCeVZhbCkgXAogICAgIG1hY3JvKE9wRW51bWVyYXRvckluQnlWYWwpIFwKICAg
ICBtYWNybyhPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSkgXAorICAgIG1hY3JvKE9wR2V0QnlJ
ZCkgXAogCiAjZGVmaW5lIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX0FMTE9DQVRJT05fUFJP
RklMRShtYWNybykgXAogICAgIG1hY3JvKE9wTmV3QXJyYXkpIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2
aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw4IEBAIHZvaWQgVW5s
aW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW5JbXAKICAgICBleHRyYU1lbW9yeSArPSB0aGlz
T2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYnl0ZVNpemUoKTsKIAogICAgIHZpc2l0b3IucmVwb3J0
RXh0cmFNZW1vcnlWaXNpdGVkKGV4dHJhTWVtb3J5KTsKKworICAgIFZNOjpTcGFjZUFuZFNldDo6
c2V0Rm9yKCp0aGlzT2JqZWN0LT5zdWJzcGFjZSgpKS5hZGQodGhpc09iamVjdCk7CiB9CiAKIERF
RklORV9WSVNJVF9DSElMRFJFTihVbmxpbmtlZENvZGVCbG9jayk7CkBAIC0zMTYsNCArMzE4LDQ1
IEBAIGludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcE9mZnMKICAgICByZXR1cm4g
bV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwogfQogCit2b2lkIFVu
bGlua2VkQ29kZUJsb2NrOjphbGxvY2F0ZVNoYXJlZFByb2ZpbGVzKCkKK3sKKyAgICBSRUxFQVNF
X0FTU0VSVCghbV9tZXRhZGF0YS0+aXNGaW5hbGl6ZWQoKSk7CisKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mVmFsdWVQcm9maWxlcyA9IG51bVBhcmFtZXRlcnMoKTsKKyAgICAgICAg
aWYgKG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAor
ICAgICAgICAgICAgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51bUVudHJp
ZXM8X19vcD4oKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJ
TEUoQ09VTlQpCisjdW5kZWYgQ09VTlQKKyAgICAgICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxl
cyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JPcGVuPigpICogMzsKKyAgICAg
ICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9w
SXRlcmF0b3JOZXh0PigpICogMzsKKyAgICAgICAgfQorCisgICAgICAgIG1fdmFsdWVQcm9maWxl
cyA9IEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT4obnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKTsKKyAg
ICB9CisKKyAgICBpZiAobV9tZXRhZGF0YS0+aGFzTWV0YWRhdGEoKSkgeworICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkFycmF5UHJvZmlsZXMgPSAwOworCisjZGVmaW5lIENPVU5UKF9fb3ApIFwK
KyAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8
X19vcD4oKTsKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfQVJSQVlfUFJPRklMRShDT1VO
VCkKKyN1bmRlZiBDT1VOVAorICAgICAgICBudW1iZXJPZkFycmF5UHJvZmlsZXMgKz0gbV9tZXRh
ZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yTmV4dD4oKTsKKworICAgICAgICBtX2FycmF5UHJv
ZmlsZXMgPSBGaXhlZFZlY3RvcjxBcnJheVByb2ZpbGU+KG51bWJlck9mQXJyYXlQcm9maWxlcyk7
CisgICAgfQorfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseShWTSYpCit7CisgICAgZm9yIChhdXRvJiBwcm9maWxlIDogbV92YWx1ZVByb2ZpbGVzKQor
ICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgIGZvciAoYXV0
byYgcHJvZmlsZSA6IG1fYXJyYXlQcm9maWxlcykKKyAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24odGhpcyk7CisKKyAgICBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vi
c3BhY2UoKSkucmVtb3ZlKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
Q29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR0V4aXRQ
cm9maWxlLmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJVbmxpbmtlZE1ldGFk
YXRhVGFibGUuaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rv
ci5oPgpAQCAtMzI0LDYgKzMyNiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBoYXNFeGl0
U2l0ZShsb2NrZXIsIHNpdGUpOwogICAgIH0KIAorICAgIGJvb2wgaGFzQW55RXhpdHNBdChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuaGFzQW55RXhpdHNB
dChsb2NrZXIsIGJ5dGVjb2RlSW5kZXgpOworICAgIH0KKworICAgIGJvb2wgaGFzQW55RXhpdHNB
dChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIHJldHVybiBoYXNBbnlFeGl0c0F0KGxv
Y2tlciwgYnl0ZWNvZGVJbmRleCk7CisgICAgfQorCiAgICAgREZHOjpFeGl0UHJvZmlsZSYgZXhp
dFByb2ZpbGUoKSB7IHJldHVybiBtX2V4aXRQcm9maWxlOyB9CiAjZW5kaWYKIApAQCAtMzM0LDYg
KzM0Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWV0YWRhdGEtPnNpemVJbkJ5dGVz
KCk7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVNoYXJlZFByb2ZpbGVzKCk7CisKKyAgICB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7CiAKIHByb3RlY3RlZDoKICAgICBVbmxp
bmtlZENvZGVCbG9jayhWTSYsIFN0cnVjdHVyZSosIENvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxl
SW5mbyYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+KTsKQEAgLTQxOSw2ICs0MzUsOCBA
QCBwcml2YXRlOgogICAgIEZpeGVkVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAg
ICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJz
OwogICAgIEZpeGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNT
b3VyY2VDb2RlUmVwcmVzZW50YXRpb247CisgICAgRml4ZWRWZWN0b3I8VmFsdWVQcm9maWxlPiBt
X3ZhbHVlUHJvZmlsZXM7IC8vIFRoZSBmaXJzdCBudW1QYXJhbWV0ZXJzKCkgYXJlIGFyZ3VtZW50
IHByb2ZpbGVzLgorICAgIEZpeGVkVmVjdG9yPEFycmF5UHJvZmlsZT4gbV9hcnJheVByb2ZpbGVz
OwogICAgIHVzaW5nIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciA9IEZpeGVkVmVjdG9yPFdyaXRl
QmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4+OwogICAgIEZ1bmN0aW9uRXhwcmVz
c2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9y
IG1fZnVuY3Rpb25FeHByczsKQEAgLTQ1Niw2ICs0NzQsMTEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gb3V0T2ZMaW5lSnVtcE9mZnNldChpbnN0cnVjdGlvbi5vZmZzZXQoKSk7CiAgICAgfQog
CisgICAgVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUodW5zaWduZWQgaSkgeyByZXR1cm4gbV92
YWx1ZVByb2ZpbGVzW2ldOyB9CisgICAgQXJyYXlQcm9maWxlJiBhcnJheVByb2ZpbGUodW5zaWdu
ZWQgaSkgeyByZXR1cm4gbV9hcnJheVByb2ZpbGVzW2ldOyB9CisgICAgdW5zaWduZWQgbnVtVmFs
dWVQcm9maWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVQcm9maWxlcy5zaXplKCk7IH0KKyAg
ICB1bnNpZ25lZCBudW1BcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb2Zp
bGVzLnNpemUoKTsgfQorCiBwcml2YXRlOgogICAgIHVzaW5nIE91dE9mTGluZUp1bXBUYXJnZXRz
ID0gSGFzaE1hcDxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0LCBpbnQ+OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExOSw2ICsxMTksNyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
OjpmaW5hbGl6CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2RlQmxvY2stPmNl
bGxMb2NrKCkgfTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1faW5zdHJ1Y3Rpb25zID0gV1RGTW92
ZShpbnN0cnVjdGlvbnMpOworICAgICAgICBtX2NvZGVCbG9jay0+YWxsb2NhdGVTaGFyZWRQcm9m
aWxlcygpOwogICAgICAgICBtX2NvZGVCbG9jay0+bV9tZXRhZGF0YS0+ZmluYWxpemUoKTsKIAog
ICAgICAgICBtX2NvZGVCbG9jay0+bV9qdW1wVGFyZ2V0cyA9IFdURk1vdmUobV9qdW1wVGFyZ2V0
cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0
YVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRNZXRhZGF0YVRhYmxlLmNwcAkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDEwICs1NSwxMCBAQCB2b2lkIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Zmlu
YWxpemUoKQogICAgICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IG9mZnNldDsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlcltpXSA9IG9m
ZnNldDsgLy8gV2UgYWxpZ24gd2hlbiB3ZSBhY2Nlc3MgdGhpcy4KICAgICAgICAgICAgIHVuc2ln
bmVkIGFsaWdubWVudCA9IG1ldGFkYXRhQWxpZ25tZW50KHN0YXRpY19jYXN0PE9wY29kZUlEPihp
KSk7CiAgICAgICAgICAgICBvZmZzZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdubWVudCwg
b2Zmc2V0KTsKICAgICAgICAgICAgIEFTU0VSVChhbGlnbm1lbnQgPD0gc19tYXhNZXRhZGF0YUFs
aWdubWVudCk7Ci0gICAgICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7CiAgICAgICAgICAgICBv
ZmZzZXQgKz0gbnVtYmVyT2ZFbnRyaWVzICogbWV0YWRhdGFTaXplKHN0YXRpY19jYXN0PE9wY29k
ZUlEPihpKSk7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyW3Nfb2Zmc2V0VGFibGVFbnRyaWVz
IC0gMV0gPSBvZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRNZXRhZGF0YVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCShyZXZpc2lvbiAyODI0NjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIH5VbmxpbmtlZE1ldGFk
YXRhVGFibGUoKTsKIAogICAgIHVuc2lnbmVkIGFkZEVudHJ5KE9wY29kZUlEKTsKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGU+CisgICAgdW5zaWduZWQgbnVtRW50cmllcygpOwogCiAg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKQEAgLTY0LDYgKzY2LDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVbmxpbmtlZE1ldGFkYXRhVGFibGUpOwogICAgIH0K
IAorICAgIGJvb2wgaXNGaW5hbGl6ZWQoKSB7IHJldHVybiBtX2lzRmluYWxpemVkOyB9CisgICAg
Ym9vbCBoYXNNZXRhZGF0YSgpIHsgcmV0dXJuIG1faGFzTWV0YWRhdGE7IH0KKwogcHJpdmF0ZToK
ICAgICBlbnVtIEVtcHR5VGFnIHsgRW1wdHkgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5s
aW5lcy5oCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2
ICs3MywxNCBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFVubGlua2VkTWV0YWRhdGFUCiAgICAg
cmV0dXJuIHByZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF0rKzsKIH0KIAordGVtcGxhdGUgPHR5
cGVuYW1lIEJ5dGVjb2RlPgorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1ldGFkYXRh
VGFibGU6Om51bUVudHJpZXMoKQoreworICAgIGNvbnN0ZXhwciBhdXRvIG9wY29kZUlEID0gQnl0
ZWNvZGU6Om9wY29kZUlEOworICAgIEFTU0VSVCghbV9pc0ZpbmFsaXplZCAmJiBvcGNvZGVJRCA8
IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMSk7CisgICAgcmV0dXJuIHByZXByb2Nlc3NCdWZmZXIo
KVtvcGNvZGVJRF07Cit9CisKIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVubGlua2VkTWV0YWRhdGFU
YWJsZTo6c2l6ZUluQnl0ZXMoKQogewogICAgIGlmIChtX2lzRmluYWxpemVkICYmICFtX2hhc01l
dGFkYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVBy
b2ZpbGUuaAkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFt
Lmg+CiAKQEAgLTQ1LDYgKzQ2LDExIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAK
ICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKICAgICB7CisgICAgICAgIGNsZWFyQnVja2V0cygpOwor
ICAgIH0KKworICAgIHZvaWQgY2xlYXJCdWNrZXRzKCkKKyAgICB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKQogICAgICAgICAgICAg
bV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQpAQCAtNTUs
MTcgKzYxLDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgICAgICByZXR1cm4gbV9i
dWNrZXRzICsgbnVtYmVyT2ZCdWNrZXRzICsgaTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgQ2xh
c3NJbmZvKiBjbGFzc0luZm8odW5zaWduZWQgYnVja2V0KSBjb25zdAotICAgIHsKLSAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbYnVja2V0XSk7Ci0gICAg
ICAgIGlmICghIXZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAogICAgIHVuc2lnbmVkIG51bWJlck9mU2FtcGxlcygp
IGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwpAQCAtOTIsOSArODcs
OSBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgCi0gICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYgbG9ja2VyKQorICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbigpCiAgICAgewot
ICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmdQcmludFN0cmVh
bSBvdXQ7CiAgICAgICAgIG91dC5wcmludCgicHJlZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1bXAo
bV9wcmVkaWN0aW9uKSk7CkBAIC0xMTgsMTAgKzExMywxMCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxl
QmFzZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gVXBkYXRlcyB0aGUgcHJlZGlj
dGlvbiBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZS4gTmV2ZXIgY2FsbCB0aGlzIGZyb20gYW55IHRo
cmVhZAotICAgIC8vIHRoYXQgaXNuJ3QgZXhlY3V0aW5nIHRoZSBjb2RlLgotICAgIFNwZWN1bGF0
ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
KQorICAgIFNwZWN1bGF0ZWRUeXBlIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpCiAgICAgewor
ICAgICAgICAvLyBNdWx0aXBsZSB0aHJlYWRzIGNvdWxkIGJlIGNhbGxpbmcgaW50byB0aGlzIGF0
IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIC8vIFRoZSBpbXBvcnQgcGFydCBpcyB0aGF0IHdlIGRv
bid0IGVuZCB1cCBjb3JydXB0aW5nIGFueSB2YWx1ZXMuCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CiAgICAgICAgICAgICBp
ZiAoIXZhbHVlKQpAQCAtMTU2LDYgKzE1MSw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXQKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2Zp
bGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAgICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVl
UHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mRmlyc3RCdWNrZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmFsdWVQ
cm9maWxlLCBtX2J1Y2tldHNbMF0pOyB9CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kVmly
dHVhbFJlZ2lzdGVyIDogcHVibGljIFZhbHVlUHJvZmlsZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDEwICszNiwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLUFy
cmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
IGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9v
bCBtYWtlU2FmZSkKK0FycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChHcmFwaCYgZ3Jh
cGgsIGNvbnN0IENvZGVPcmlnaW4mIG9yaWdpbiwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJh
eTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKIHsKKyAgICBpZiAocHJvZmlsZS0+b2Jz
ZXJ2ZWREaWZmZXJlbnRHbG9iYWxPYmplY3QoKSAmJiBncmFwaC5oYXNBbnlFeGl0c0F0KG9yaWdp
bikpIHsKKyAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBhbiBvcmlnaW5hbCBhcnJheSBzdHJ1Y3R1
cmUsIGJ1dCBmcm9tIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGdsb2JhbCBvYmplY3QgdGhhbiB0
aGUgbGV4aWNhbCBnbG9iYWwgb2JqZWN0LiBTbyB3ZSBjb25zZXJ2YXRpdmVseQorICAgICAgICAv
LyBzYXkgaXQgaXMgbm90IGFuIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZS4KKyAgICAgICAgcHJv
ZmlsZS0+c2V0RG9lc05vdFVzZU9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCk7CisgICAgfQorCiAg
ICAgQXJyYXk6OkNsYXNzIG5vbkFycmF5OwotICAgIGlmIChwcm9maWxlLT51c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXMobG9ja2VyKSkKKyAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzKCkpCiAgICAgICAgIG5vbkFycmF5ID0gQXJyYXk6Ok9yaWdpbmFsTm9uQXJy
YXk7CiAgICAgZWxzZQogICAgICAgICBub25BcnJheSA9IEFycmF5OjpOb25BcnJheTsKQEAgLTYz
LDI3ICs3MCwyNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoY29uc3QgCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnZlcnRzID0gQXJyYXk6OkFzSXM7CiAKLSAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZSh0eXBlLCBpc0FycmF5LCBjb252ZXJ0cywgYWN0aW9uKS53aXRo
UHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5
TW9kZSh0eXBlLCBpc0FycmF5LCBjb252ZXJ0cywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxl
LCBtYWtlU2FmZSk7CiAgICAgfTsKIAotICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWQgPSBwcm9maWxl
LT5vYnNlcnZlZEFycmF5TW9kZXMobG9ja2VyKTsKKyAgICBBcnJheU1vZGVzIG9ic2VydmVkID0g
cHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKCk7CiAgICAgc3dpdGNoIChvYnNlcnZlZCkgewog
ICAgIGNhc2UgMDoKICAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VW5wcm9maWxlZCk7
CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KToKLSAg
ICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQorICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpX
cml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50cywgbm9uQXJy
YXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbik7Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIG5vbkFycmF5
LCBhY3Rpb24pLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFr
ZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRp
Y3Rpb25zLCBub25BcnJheSwgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShwcm9m
aWxlLCBtYWtlU2FmZSk7CiAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJh
eXMoQXJyYXlXaXRoVW5kZWNpZGVkKToKICAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3Jp
dGUpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ0FyZ3Vt
ZW50cywgQXJyYXk6OkFycmF5LCBBcnJheTo6T3V0T2ZCb3VuZHMsIEFycmF5OjpDb252ZXJ0LCBh
Y3Rpb24pOwotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpVbmRlY2lkZWQsIEFycmF5
OjpBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJv
ZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6VW5kZWNpZGVkLCBBcnJheTo6QXJyYXksIEFycmF5OjpPdXRPZkJvdW5kcywgQXJy
YXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgICAg
ICAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXkpIHwg
YXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhVbmRlY2lkZWQpOgotICAg
ICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0
SW5kZXhlZEFjY2Vzc2VzKGxvY2tlcikpCisgICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6Oldy
aXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKICAgICAgICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nQXJndW1lbnRzLCBBcnJheTo6
UG9zc2libHlBcnJheSwgQXJyYXk6Ok91dE9mQm91bmRzLCBBcnJheTo6Q29udmVydCwgYWN0aW9u
KTsKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9u
cywgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1h
a2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVk
aWN0aW9ucywgYWN0aW9uKS53aXRoU3BlY3VsYXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBtYWtl
U2FmZSk7CiAKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJy
YXlXaXRoSW50MzIpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhB
cnJheVdpdGhJbnQzMik6CkBAIC0xMTMsNTAgKzEyMCw1MCBAQCBBcnJheU1vZGUgQXJyYXlNb2Rl
Ojpmcm9tT2JzZXJ2ZWQoY29uc3QgCiAgICAgICAgIHJldHVybiBoYW5kbGVDb250aWd1b3VzTW9k
ZXMoQXJyYXk6OkNvbnRpZ3VvdXMsIG9ic2VydmVkKTsKIAogICAgIGNhc2UgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpOgotICAgICAgICBy
ZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6QXNJ
cywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBub25BcnJheSwgQXJyYXk6
OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2Ug
YXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9u
QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUo
QXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9u
KS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgbm9uQXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIGFz
QXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6QXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNh
ZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3JhZ2UsIEFycmF5
OjpBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNh
ZmUpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlKToKICAgICBjYXNlIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBBcnJh
eU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpBcnJheSwgQXJyYXk6OkFz
SXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2UsIEFycmF5OjpB
cnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUp
OwogICAgIGNhc2UgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhB
cnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhB
cnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpBcnJheVN0b3Jh
Z2UsIEFycmF5OjpQb3NzaWJseUFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmls
ZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6QXJyYXlTdG9yYWdlLCBBcnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFj
dGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgYXNBcnJheU1v
ZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8
IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5
V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFy
cmF5cyhBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIEFycmF5
TW9kZShBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZSwgQXJyYXk6OlBvc3NpYmx5QXJyYXksIEFy
cmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUp
OworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlLCBB
cnJheTo6UG9zc2libHlBcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJv
ZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgSW50OEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJu
IEFycmF5TW9kZShBcnJheTo6SW50OEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlv
bikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVy
biBBcnJheU1vZGUoQXJyYXk6OkludDhBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rp
b24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEludDE2QXJyYXlN
b2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpJbnQxNkFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtl
U2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkludDE2QXJyYXksIG5vbkFy
cmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7
CiAgICAgY2FzZSBJbnQzMkFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJh
eTo6SW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFy
cmF5OjpJbnQzMkFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2Zp
bGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgVWludDhBcnJheU1vZGU6Ci0gICAgICAg
IHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQ4QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJ
cywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWludDhBcnJheSwgbm9uQXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIFVp
bnQ4Q2xhbXBlZEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6VWlu
dDhDbGFtcGVkQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmls
ZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShB
cnJheTo6VWludDhDbGFtcGVkQXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53
aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgY2FzZSBVaW50MTZBcnJheU1vZGU6
Ci0gICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQxNkFycmF5LCBub25BcnJheSwg
QXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2Fm
ZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OlVpbnQxNkFycmF5LCBub25BcnJh
eSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwog
ICAgIGNhc2UgVWludDMyQXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5
OjpVaW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxl
KGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFy
cmF5OjpVaW50MzJBcnJheSwgbm9uQXJyYXksIEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9m
aWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAgICBjYXNlIEZsb2F0MzJBcnJheU1vZGU6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkZsb2F0MzJBcnJheSwgbm9uQXJyYXksIEFycmF5
OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOwor
ICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpGbG9hdDMyQXJyYXksIG5vbkFycmF5LCBB
cnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAg
Y2FzZSBGbG9hdDY0QXJyYXlNb2RlOgotICAgICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpG
bG9hdDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShs
b2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJh
eTo6RmxvYXQ2NEFycmF5LCBub25BcnJheSwgQXJyYXk6OkFzSXMsIGFjdGlvbikud2l0aFByb2Zp
bGUocHJvZmlsZSwgbWFrZVNhZmUpOwogICAgIGNhc2UgQmlnSW50NjRBcnJheU1vZGU6Ci0gICAg
ICAgIHJldHVybiBBcnJheU1vZGUoQXJyYXk6OkJpZ0ludDY0QXJyYXksIG5vbkFycmF5LCBBcnJh
eTo6QXNJcywgYWN0aW9uKS53aXRoUHJvZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsK
KyAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6QmlnSW50NjRBcnJheSwgbm9uQXJyYXks
IEFycmF5OjpBc0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKICAg
ICBjYXNlIEJpZ1VpbnQ2NEFycmF5TW9kZToKLSAgICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJh
eTo6QmlnVWludDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53aXRoUHJv
ZmlsZShsb2NrZXIsIHByb2ZpbGUsIG1ha2VTYWZlKTsKKyAgICAgICAgcmV0dXJuIEFycmF5TW9k
ZShBcnJheTo6QmlnVWludDY0QXJyYXksIG5vbkFycmF5LCBBcnJheTo6QXNJcywgYWN0aW9uKS53
aXRoUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAKICAgICBkZWZhdWx0OgogICAgICAgICAv
LyBJZiB3ZSBoYXZlIHNlZW4gbXVsdGlwbGUgVHlwZWRBcnJheSB0eXBlcywgb3IgYSBUeXBlZEFy
cmF5IGFuZCBub24tdHlwZWQgYXJyYXksIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB0cnkgdG8g
Y29udmVydCB0aGUgb2JqZWN0IHNpbmNlIHlvdSBjYW4ndCBjb252ZXJ0IHR5cGVkIGFycmF5cy4K
ICAgICAgICAgaWYgKG9ic2VydmVkICYgQUxMX1RZUEVEX0FSUkFZX01PREVTKQotICAgICAgICAg
ICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgbm9uQXJyYXksIEFycmF5OjpBc0lz
LCBhY3Rpb24pLndpdGhQcm9maWxlKGxvY2tlciwgcHJvZmlsZSwgbWFrZVNhZmUpOworICAgICAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6R2VuZXJpYywgbm9uQXJyYXksIEFycmF5OjpB
c0lzLCBhY3Rpb24pLndpdGhQcm9maWxlKHByb2ZpbGUsIG1ha2VTYWZlKTsKIAotICAgICAgICBp
ZiAoKG9ic2VydmVkICYgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheSkp
ICYmIHByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhsb2NrZXIpKQotICAgICAg
ICAgICAgcmV0dXJuIEFycmF5TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucykud2l0
aFNwZWN1bGF0aW9uRnJvbVByb2ZpbGUobG9ja2VyLCBwcm9maWxlLCBtYWtlU2FmZSk7CisgICAg
ICAgIGlmICgob2JzZXJ2ZWQgJiBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFy
cmF5KSkgJiYgcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCisgICAgICAg
ICAgICByZXR1cm4gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zKS53aXRo
U3BlY3VsYXRpb25Gcm9tUHJvZmlsZShwcm9maWxlLCBtYWtlU2FmZSk7CiAgICAgICAgIAogICAg
ICAgICBBcnJheTo6VHlwZSB0eXBlOwogICAgICAgICBBcnJheTo6Q2xhc3MgYXJyYXlDbGFzczsK
QEAgLTE4Myw3ICsxOTAsNyBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQoY29u
c3QgCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFycmF5Q2xhc3MgPSBBcnJheTo6UG9zc2li
bHlBcnJheTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlD
bGFzcywgQXJyYXk6OkNvbnZlcnQsIGFjdGlvbikud2l0aFByb2ZpbGUobG9ja2VyLCBwcm9maWxl
LCBtYWtlU2FmZSk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwgYXJyYXlDbGFzcywg
QXJyYXk6OkNvbnZlcnQsIGFjdGlvbikud2l0aFByb2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5o
CShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
TW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gQXJyYXlNb2RlKHdvcmQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgQXJyYXlN
b2RlIGZyb21PYnNlcnZlZChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBBcnJheVByb2ZpbGUq
LCBBcnJheTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKKyAgICBzdGF0aWMgQXJyYXlNb2RlIGZy
b21PYnNlcnZlZChHcmFwaCYsIGNvbnN0IENvZGVPcmlnaW4mLCBBcnJheVByb2ZpbGUqLCBBcnJh
eTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKICAgICAKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1
bGF0aW9uKEFycmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7CkBAIC0x
OTAsMTMgKzE5MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSgp
LCBhcnJheUNsYXNzLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKICAg
ICB9CiAgICAgCi0gICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wg
bWFrZVNhZmUpIGNvbnN0CisgICAgQXJyYXlNb2RlIHdpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxl
KEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKICAgICB7CiAgICAg
ICAgIEFycmF5OjpTcGVjdWxhdGlvbiBteVNwZWN1bGF0aW9uOwogCiAgICAgICAgIGlmIChtYWtl
U2FmZSkKICAgICAgICAgICAgIG15U3BlY3VsYXRpb24gPSBBcnJheTo6T3V0T2ZCb3VuZHM7Ci0g
ICAgICAgIGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKGxvY2tlcikpCisgICAgICAg
IGVsc2UgaWYgKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKCkpCiAgICAgICAgICAgICBteVNwZWN1
bGF0aW9uID0gQXJyYXk6OlRvSG9sZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbXlTcGVj
dWxhdGlvbiA9IEFycmF5OjpJbkJvdW5kczsKQEAgLTIwNCwyNyArMjA0LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gd2l0aFNwZWN1bGF0aW9uKG15U3BlY3VsYXRpb24pOwogICAgIH0KICAg
ICAKLSAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBs
b2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFycmF5OjpDbGFzcyBteUFycmF5Q2xhc3M7Ci0KLSAgICAgICAgaWYgKGlzSlNB
cnJheSgpKSB7Ci0gICAgICAgICAgICBpZiAocHJvZmlsZS0+dXNlc09yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmVzKGxvY2tlcikgJiYgYmVuZWZpdHNGcm9tT3JpZ2luYWxBcnJheSgpKSB7Ci0gICAgICAg
ICAgICAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzID0gcHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1v
ZGVzKGxvY2tlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGhhc1NlZW5Db3B5T25Xcml0ZUFycmF5
KGFycmF5TW9kZXMpICYmICFoYXNTZWVuV3JpdGFibGVBcnJheShhcnJheU1vZGVzKSkKLSAgICAg
ICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6Ok9yaWdpbmFsQ29weU9uV3JpdGVB
cnJheTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghaGFzU2VlbkNvcHlPbldyaXRlQXJyYXko
YXJyYXlNb2RlcykgJiYgaGFzU2VlbldyaXRhYmxlQXJyYXkoYXJyYXlNb2RlcykpCi0gICAgICAg
ICAgICAgICAgICAgIG15QXJyYXlDbGFzcyA9IEFycmF5OjpPcmlnaW5hbEFycmF5OwotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6
OkFycmF5OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbXlBcnJheUNsYXNz
ID0gQXJyYXk6OkFycmF5OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG15QXJyYXlDbGFz
cyA9IGFycmF5Q2xhc3MoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB3aXRoQXJyYXlDbGFz
cyhteUFycmF5Q2xhc3MpLndpdGhTcGVjdWxhdGlvbkZyb21Qcm9maWxlKGxvY2tlciwgcHJvZmls
ZSwgbWFrZVNhZmUpOwotICAgIH0KLSAgICAKICAgICBBcnJheU1vZGUgd2l0aFR5cGUoQXJyYXk6
OlR5cGUgdHlwZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBBcnJheU1vZGUodHlwZSwg
YXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCksIGFjdGlvbigpKTsKQEAg
LTUzOCw2ICs1MTcsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHUuYXNXb3JkID0gd29y
ZDsKICAgICB9CisKKyAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoQXJyYXlQcm9maWxlKiBwcm9m
aWxlLCBib29sIG1ha2VTYWZlKSBjb25zdAorICAgIHsKKyAgICAgICAgQXJyYXk6OkNsYXNzIG15
QXJyYXlDbGFzczsKKworICAgICAgICBpZiAoaXNKU0FycmF5KCkpIHsKKyAgICAgICAgICAgIGlm
IChwcm9maWxlLT51c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoKSAmJiBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkpIHsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGVzIGFycmF5TW9kZXMg
PSBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoaGFz
U2VlbkNvcHlPbldyaXRlQXJyYXkoYXJyYXlNb2RlcykgJiYgIWhhc1NlZW5Xcml0YWJsZUFycmF5
KGFycmF5TW9kZXMpKQorICAgICAgICAgICAgICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6
T3JpZ2luYWxDb3B5T25Xcml0ZUFycmF5OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFoYXNT
ZWVuQ29weU9uV3JpdGVBcnJheShhcnJheU1vZGVzKSAmJiBoYXNTZWVuV3JpdGFibGVBcnJheShh
cnJheU1vZGVzKSkKKyAgICAgICAgICAgICAgICAgICAgbXlBcnJheUNsYXNzID0gQXJyYXk6Ok9y
aWdpbmFsQXJyYXk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBt
eUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBteUFycmF5Q2xhc3MgPSBBcnJheTo6QXJyYXk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbXlBcnJheUNsYXNzID0gYXJyYXlDbGFzcygpOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIHdpdGhBcnJheUNsYXNzKG15QXJyYXlDbGFzcykud2l0aFNwZWN1bGF0aW9uRnJvbVBy
b2ZpbGUocHJvZmlsZSwgbWFrZVNhZmUpOworICAgIH0KKyAgICAKICAgICAKICAgICBBcnJheU1v
ZGVzIGFycmF5TW9kZXNXaXRoSW5kZXhpbmdTaGFwZXMoSW5kZXhpbmdUeXBlIHNoYXBlKSBjb25z
dAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYXV0byBnZXRWYWx1ZVByb2ZpbGVQcmVkaWN0
aW9uRnJvbUZvckNvZGVCbG9ja0FuZEJ5dGVjb2RlT2Zmc2V0ID0gWyZdIChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICAgICAgewotICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbjsKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0
aW9uRm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBj
b2RlQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCgpKTsKICAgICAgICAgICAgIGF1dG8qIGZ1enplckFnZW50ID0gbV92
bS0+ZnV6emVyQWdlbnQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmdXp6ZXJBZ2VudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1enplckFnZW50LT5nZXRQcmVkaWN0aW9uKGNvZGVC
bG9jaywgY29kZU9yaWdpbiwgcHJlZGljdGlvbikgJiBTcGVjQnl0ZWNvZGVUb3A7CkBAIC05ODMs
MTAgKzk3OSw5IEBAIHByaXZhdGU6CiAKICAgICBBcnJheU1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5
UHJvZmlsZSYgcHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24pCiAgICAgewotICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+bV9sb2NrKTsKLSAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2spOwotICAgICAgICBib29sIG1h
a2VTYWZlID0gcHJvZmlsZS5vdXRPZkJvdW5kcyhsb2NrZXIpOwotICAgICAgICByZXR1cm4gQXJy
YXlNb2RlOjpmcm9tT2JzZXJ2ZWQobG9ja2VyLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7
CisgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jayk7CisgICAgICAgIGJvb2wgbWFrZVNhZmUgPSBwcm9maWxlLm91
dE9mQm91bmRzKCk7CisgICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChtX2dy
YXBoLCBjdXJyZW50Q29kZU9yaWdpbigpLCAmcHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CiAg
ICAgfQogCiAgICAgTm9kZSogbWFrZVNhZmUoTm9kZSogbm9kZSkKQEAgLTIwNTgsOSArMjA1Myw4
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmkKICAgICAgICAgICAg
IC8vIGFyZ3VtZW50cyByZWNlaXZlZCBpbnNpZGUgdGhlIGNhbGxlZS4gQnV0IHRoYXQgcHJvYmFi
bHkgd29uJ3QgbWF0dGVyIGZvciBtb3N0CiAgICAgICAgICAgICAvLyBjYWxscy4KICAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2sgJiYgYXJndW1lbnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgVmFsdWVQ
cm9maWxlJiBwcm9maWxlID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChhcmd1
bWVudCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QocHJvZmlsZS5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CisgICAgICAgICAgICAgICAgdmFyaWFibGUtPnBy
ZWRpY3QocHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFw
aChudW1TZXRBcmd1bWVudHMgPj0gbWFuZGF0b3J5TWluaW11bSA/IFNldEFyZ3VtZW50TWF5YmUg
OiBTZXRBcmd1bWVudERlZmluaXRlbHksIE9wSW5mbyh2YXJpYWJsZSkpOwpAQCAtNjMwNSw3ICs2
Mjk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICAgICAgaWYgKHNob3VsZENvbXBpbGVBc0dldEJ5SWQpCiAgICAgICAgICAgICAgICAgaGFuZGxl
R2V0QnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwgaWRl
bnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQsIG5leHRPcGNv
ZGVJbmRleCgpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5t
X2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgICAgIEFycmF5TW9kZSBh
cnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKmJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9h
cnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
Y291bGQgY29uc2lkZXIgbWFraW5nIHRoaXMgbm90IHZhcmFyZywgc2luY2UgaXQgb25seSB1c2Vz
IHRocmVlIGNoaWxkCiAgICAgICAgICAgICAgICAgLy8gc2xvdHMuCiAgICAgICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE5MgpAQCAtNzA3
NSwxMSArNzA2OSw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1lbnRz
OwogCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0KICAgICAg
ICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVn
aXN0ZXImIHByb2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChv
cGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlv
bnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTc0
MzEsNyArNzQyMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBpc0RvbmVCbG9jayA9IGFsbG9jYXRlVW50YXJn
ZXRhYmxlQmxvY2soKTsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBkb0xvYWRCbG9jayA9
IGFsbG9jYXRlVW50YXJnZXRhYmxlQmxvY2soKTsKIAotICAgICAgICAgICAgICAgIEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUsIEFy
cmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJy
YXlNb2RlKCptZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAg
ICAgICAgICAgIGF1dG8gcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChC
eXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4Lm9mZnNldCgpLCBPcEl0ZXJhdG9yTmV4dDo6Z2V0
VmFsdWUpKTsKIAogICAgICAgICAgICAgICAgIHsKQEAgLTgzMjYsNyArODMxOCw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7Ci0gICAgICAgICAgICAgICAgQXJyYXlN
b2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
Lm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgQXJyYXlNb2Rl
IGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5t
X2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAgIHNldChieXRlY29k
ZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
YmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2luX2J5X3ZhbCk7CkBAIC04NDEwLDcgKzg0MDIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9uZXh0OiB7
CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVu
dW1lcmF0b3JOZXh0PigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJh
eVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0
ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gZ2V0KGJ5dGVjb2RlLm1f
aW5kZXgpOwogICAgICAgICAgICAgTm9kZSogZW51bWVyYXRvciA9IGdldChieXRlY29kZS5tX2Vu
dW1lcmF0b3IpOwpAQCAtODQ0Miw3ICs4NDM0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbDog
ewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BF
bnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2Rl
ID0gZ2V0QXJyYXlNb2RlKG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7Cisg
ICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCptZXRhZGF0YS5t
X2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
c3BlY3VsYXRpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQoKTsKIAogICAgICAgICAg
ICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpAQCAtODUwNiw3ICs4NDk4LDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNl
IG9wX2VudW1lcmF0b3JfaW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpOwogICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZSwgQXJyYXk6OlJlYWQpOworICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGdldEFycmF5TW9kZSgqbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKIAog
ICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fYmFzZSkpOwogICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lKSk7CkBAIC04
NTIxLDcgKzg1MTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5OiB7CiAgICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JI
YXNPd25Qcm9wZXJ0eT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBn
ZXRBcnJheU1vZGUobWV0YWRhdGEubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAg
ICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoKm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdl
dChieXRlY29kZS5tX2Jhc2UpKTsKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRl
Y29kZS5tX3Byb3BlcnR5TmFtZSkpOwpAQCAtODg4MSw3ICs4ODczLDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZQogICAgIH0KIAogICAgIGlmICghY29tcGlsZWRB
c1B1dEJ5SWQpIHsKLSAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3JpdGUp
OworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKCpieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBBcnJheTo6V3JpdGUpOwogCiAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0
eSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNDcsOSArNDA0Nyw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9kZS0+b3JpZ2luLnNl
bWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBB
cnJheU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMsIEFycmF5OjpSZWFkKTsKICAg
ICAgICAgaWYgKGFycmF5UHJvZmlsZSkgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgYXJyYXlQcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJsb2NrKTsKLSAgICAg
ICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGxvY2tlciwgYXJyYXlQ
cm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOworICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5j
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24ocHJvZmlsZWRCbG9jayk7CisgICAgICAgICAgICBhcnJh
eU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChtX2dyYXBoLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGFycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQsIGZhbHNlKTsKICAgICAgICAgICAgIGlm
IChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpVbnByb2ZpbGVkKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRm9yIG5vcm1hbCBhcnJheSBvcGVyYXRpb25zLCBpdCBtYWtlcyBzZW5zZSB0byB0cmVh
dCBVbnByb2ZpbGVkCiAgICAgICAgICAgICAgICAgLy8gYWNjZXNzZXMgYXMgRm9yY2VFeGl0IGFu
ZCBnZXQgbW9yZSBkYXRhIHJhdGhlciB0aGFuIHVzaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw3ICs1MjAsMTIgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgZXhpdEtpbmQpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzQW55RXhpdHNBdChj
b25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2Vs
aW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT51bmxpbmtlZENvZGVCbG9jaygpLT5oYXNBbnlF
eGl0c0F0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKKyAgICB9CisKICAgICBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIG1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9k
ZSogY3VycmVudE5vZGUsIE5vZGUqIG9wZXJhbmROb2RlKTsKICAgICAKICAgICBCbG9ja0luZGV4
IG51bUJsb2NrcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzLnNpemUoKTsgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcAkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsMjYgKzMz
NywyOSBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkKK3N0YXRpYyB2b2lkIG9zcldyaXRlQmFy
cmllcihWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgR1BS
UmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkKIHsKLSAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAg
b3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91dEZlbmNl
KG93bmVyKTsKKyAgICBhdXRvIGVtaXRCYXJyaWVyID0gWyZdIChhdXRvKiBjZWxsKSB7CisgICAg
ICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihjZWxsKSwgb3duZXIp
OworICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRl
biA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91dEZlbmNlKG93bmVyKTsKKworICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKT4oJnZtLCBv
d25lcik7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgICAgIGpp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRlQmFycmllcikpLCBzY3JhdGNoKTsKKyAgICAgICAg
aml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpPigmdm0sIG93bmVyKTsKLSAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bk9TUldyaXRlQmFycmllcikpLCBzY3JhdGNoKTsKLSAgICBqaXQuY2FsbChzY3JhdGNoLCBPcGVy
YXRpb25QdHJUYWcpOworICAgICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmpp
dCk7CisgICAgfTsKIAotICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsK
KyAgICBlbWl0QmFycmllcihjb2RlQmxvY2spOworICAgIGVtaXRCYXJyaWVyKGNvZGVCbG9jay0+
dW5saW5rZWRDb2RlQmxvY2soKSk7CiB9CiAKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZN
JiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewogICAg
IGppdC5tZW1vcnlGZW5jZSgpOwogICAgIAotICAgIGppdC5tb3ZlKAotICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmJh
c2VsaW5lQWx0ZXJuYXRpdmUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgb3NyV3Jp
dGVCYXJyaWVyKHZtLCBqaXQsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgb3NyV3JpdGVCYXJyaWVyKHZtLCBqaXQsIGppdC5jb2RlQmxvY2soKS0+YmFz
ZWxpbmVBbHRlcm5hdGl2ZSgpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFy
Z0dQUjApOwogCiAgICAgLy8gV2UgYmFycmllciBhbGwgaW5saW5lZCBmcmFtZXMgLS0gYW5kIG5v
dCBqdXN0IHRoZSBjdXJyZW50IGlubGluZSBzdGFjayAtLQogICAgIC8vIGJlY2F1c2Ugd2UgZG9u
J3Qga25vdyB3aGljaCBpbmxpbmVkIGZ1bmN0aW9uIG93bnMgdGhlIHZhbHVlIHByb2ZpbGUgdGhh
dApAQCAtMzY3LDEyICszNzAsOCBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0s
IENDYWxsCiAgICAgLy8gdGhlIHZhbHVlIHByb2ZpbGUuCiAgICAgSW5saW5lQ2FsbEZyYW1lU2V0
KiBpbmxpbmVDYWxsRnJhbWVzID0gaml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZ0NvbW1v
bigpLT5pbmxpbmVDYWxsRnJhbWVzLmdldCgpOwogICAgIGlmIChpbmxpbmVDYWxsRnJhbWVzKSB7
Ci0gICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5saW5l
Q2FsbEZyYW1lcykgewotICAgICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAotICAgICAgICAgICAgICAgICAgICBpbmxpbmVD
YWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKLSAgICAgICAgICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICB9CisgICAgICAgIGZvciAoSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5saW5lQ2FsbEZyYW1lcykKKyAgICAg
ICAgICAgIG9zcldyaXRlQmFycmllcih2bSwgaml0LCBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrLmdldCgpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86Om5vbkFyZ0dQ
UjApOwogICAgIH0KIAogICAgIGF1dG8qIGV4aXRJbmxpbmVDYWxsRnJhbWUgPSBleGl0Lm1fY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbklu
amVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTYgKzQ4LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygp
ID49IDEpOwogICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KHByb2ZpbGVkQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgLy8g
V2Ugb25seSBkbyB0aGlzIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBmaXJzdCBibG9jay4gVGhl
IGFyZ3VtZW50cyBmcm9tCiAgICAgICAgICAgICAvLyBvdGhlciBlbnRyeXBvaW50cyBoYXZlIGFs
cmVhZHkgYmVlbiBwb3B1bGF0ZWQgd2l0aCB0aGVpciBwcmVkaWN0aW9ucy4KICAgICAgICAgICAg
IGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9yb290VG9Bcmd1bWVudHMuZmluZChtX2dyYXBo
LmJsb2NrKDApKS0+dmFsdWU7CiAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7IGFy
ZyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7ICsr
YXJnKSB7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9maWxlJiBwcm9maWxlID0gcHJvZmlsZWRC
bG9jaygpLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChhcmcpOwotICAgICAgICAgICAgICAgIGFy
Z3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKLSAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CisgICAg
ICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0
KHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJs
b2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldElubGluZXMuaAkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MiwxMiArNjIsOSBAQCB2b2lkIENvZGVCbG9ja1NldDo6aXRlcmF0ZShjb25zdCBBYnN0cmFjCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVWaWFT
dWJzcGFjZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIHZtLmZvckVh
Y2hDb2RlQmxvY2tTcGFjZSgKLSAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNldCkgewotICAg
ICAgICAgICAgc3BhY2VBbmRTZXQuc3BhY2UuZm9yRWFjaExpdmVDZWxsKAotICAgICAgICAgICAg
ICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNl
bGwpKSk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2Uu
Zm9yRWFjaExpdmVDZWxsKAorICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6
S2luZCkgeworICAgICAgICAgICAgZnVuY3Rvcihqc0Nhc3Q8Q29kZUJsb2NrKj4oc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oY2VsbCkpKTsKICAgICAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDEwICs1ODMsMTAgQEAg
dm9pZCBIZWFwOjphZGRSZWZlcmVuY2UoSlNDZWxsKiBjZWxsLCBBcgogICAgIH0KIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIHR5cGVuYW1lIENlbGxTZXQ+Ci12b2lkIEhlYXA6OmZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnMoQ2VsbFNldCYgY2VsbFNldCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCB0eXBlbmFtZSBDZWxsU2V0T3JJc29TdWJzcGFjZT4K
K3ZvaWQgSGVhcDo6ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVycyhDZWxsU2V0
T3JJc29TdWJzcGFjZSYgc2V0T3JTdWJzcGFjZSkKIHsKLSAgICBjZWxsU2V0LmZvckVhY2hNYXJr
ZWRDZWxsKAorICAgIHNldE9yU3Vic3BhY2UuZm9yRWFjaE1hcmtlZENlbGwoCiAgICAgICAgIFsm
XSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxDZWxsVHlwZSo+KGNlbGwpLT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSh2bSgpKTsKICAg
ICAgICAgfSk7CkBAIC01OTgsMTAgKzU5OCwxMiBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25k
aXRpb25hbEZpbmFsaXplCiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVy
czxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKCkuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2Up
OwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+
KHZtKCkuc3ltYm9sVGFibGVTcGFjZSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLmV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJs
b2NrJ3MgdW5jb25kaXRpb25hbCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRo
ZSBvd25lciBleGVjdXRhYmxlJ3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkuCi0gICAgdm0oKS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAg
IFsmXSAoYXV0byYgc3BhY2UpIHsKLSAgICAgICAgICAgIHRoaXMtPmZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQpOwotICAgICAgICB9KTsK
KyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENvZGVCbG9jaz4odm0o
KS5jb2RlQmxvY2tTcGFjZS5zZXQpOworICAgIHZtKCkuZm9yRWFjaFVubGlua2VkQ29kZUJsb2Nr
U3BhY2UoWyZdIChWTTo6U3BhY2VBbmRTZXQqIHNwYWNlQW5kU2V0KSB7CisgICAgICAgIGlmICgh
c3BhY2VBbmRTZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZpbmFsaXplTWFya2Vk
VW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRDb2RlQmxvY2s+KHNwYWNlQW5kU2V0LT5z
ZXQpOworICAgIH0pOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
U3RydWN0dXJlUmFyZURhdGE+KHZtKCkuc3RydWN0dXJlUmFyZURhdGFTcGFjZSk7CiAgICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4odm0oKS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CiAgICAgaWYg
KHZtKCkubV93ZWFrU2V0U3BhY2UpCkBAIC05NzMsNyArOTc1LDcgQEAgdm9pZCBIZWFwOjpkZWxl
dGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpCiAgICAgdm0oKS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKICAgICAv
LyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGluZyBzdHVicywgb3RoZXJ3aXNlIHRo
ZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFsaXZlIGFzIHRoZXkgZ2V0IGRlbGV0
ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9yIGlzIGFzc3VtaW5nIHRoYXQgQ29k
ZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtlZENvZGVCbG9jayBnZXRzIGRlc3Ry
b3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsg
c3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgdm0oKS5jb2RlQmxvY2tTcGFjZS5zcGFjZS5z
d2VlcCgpOwogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29uZWRT
dHViUm91dGluZXMoKTsKIH0KIApAQCAtMTQ4Niw2ICsxNDg4LDcgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSGVhcDo6cnVuRW5kUGhhc2UoR0NDbwogICAgIGl0ZXJhdGVFeGVjdXRpbmdBbmRDb21waWxp
bmdDb2RlQmxvY2tzKHZpc2l0b3IsCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
IHsKICAgICAgICAgICAgIHdyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSk7CiAgICAgICAgIH0pOwog
CiAgICAgdXBkYXRlT2JqZWN0Q291bnRzKCk7CkBAIC0xNTIzLDYgKzE1MjYsNyBAQCBORVZFUl9J
TkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvCiAgICAgbV9jb2RlQmxvY2tzLT5pdGVy
YXRlQ3VycmVudGx5RXhlY3V0aW5nKAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2Nr
KSB7CiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAgIHdy
aXRlQmFycmllcihjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpOwogICAgICAgICB9KTsK
ICAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7CiAgICAgICAgIApA
QCAtMjg4NiwxMCArMjg5MCwxNCBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAg
ICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29wZSh2aXNpdG9yLCBSb290
TWFya1JlYXNvbjo6Q29kZUJsb2Nrcyk7CiAgICAgICAgICAgICBpdGVyYXRlRXhlY3V0aW5nQW5k
Q29tcGlsaW5nQ29kZUJsb2Nrc1dpdGhvdXRIb2xkaW5nTG9ja3ModmlzaXRvciwKICAgICAgICAg
ICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrKSB7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8gaGFuZGxlID0gWyZdIChhdXRvKiBjZWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmlzaXRvci5pc01hcmtlZChjZWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIGNlbGwtPmNlbGxTdGF0ZSgpID09IENlbGxTdGF0ZTo6UG9zc2libHlCbGFjaykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLnZpc2l0QXNDb25zdHJhaW50KGNlbGwpOwor
ICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAvLyBWaXNpdCB0aGUg
Q29kZUJsb2NrIGFzIGEgY29uc3RyYWludCBvbmx5IGlmIGl0J3MgYmxhY2suCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykKLSAgICAgICAgICAgICAg
ICAgICAgICAgICYmIGNvZGVCbG9jay0+Y2VsbFN0YXRlKCkgPT0gQ2VsbFN0YXRlOjpQb3NzaWJs
eUJsYWNrKQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci52aXNpdEFzQ29uc3RyYWlu
dChjb2RlQmxvY2spOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUoY29kZUJsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSk7
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pKSwKICAgICAgICAgQ29uc3RyYWludFZv
bGF0aWxpdHk6OlNlbGRvbUdyZXllZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwMiw3ICszMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4uLik7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZh
bHVlLCB2b2lkPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxkZWNsdHlw
ZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1ZSwgdm9pZD4K
ICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZUlmUHJvZmlsZWRPcGNvZGUoT3AgYnl0ZWNv
ZGUpOwogCiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lz
dGVySUQgY2VsbEdQUiwgQXJyYXlQcm9maWxlKiwgUmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyODI0NjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEyLDcgKzMxMiw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZSgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1pbmxpbmUgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoT3A6Ok1ldGFkYXRhOjptX3Byb2ZpbGUpLCBWYWx1ZVBy
b2ZpbGU+Ojp2YWx1ZSwgdm9pZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxl
ZE9wY29kZShPcCBieXRlY29kZSkKK2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZSo+Ojp2YWx1
ZSwgdm9pZD4gSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBi
eXRlY29kZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZWdUMCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI4MjQ2NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExOTQsNiArMTE5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0
aW8KICAgICAgICAgZW1pdEluaXRSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSk7
CiAKICAgICBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrKTsKKyAgICBlbWl0V3JpdGVCYXJy
aWVyKG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpKTsKIAogICAgIGVtaXRFbnRlck9w
dGltaXphdGlvbkNoZWNrKCk7CiAjZWxzZQpAQCAtMTI0NSwxNyArMTI0NiwyOSBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaW5pdERvbmUubGluaygmaml0
KTsKIAogICAgIC8vIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2spLgorICAgIC8vIGVtaXRX
cml0ZUJhcnJpZXIobV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpLgogICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIx
KTsKLSAgICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5j
aCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpOwotCiAgICAgaml0Lm1vdmUoY2FuQmVP
cHRpbWl6ZWRHUFIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4KLSAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgp
Pigmdm0sIGFyZ3VtZW50R1BSMSk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
LSAgICBDYWxsIG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25Q
dHJUYWcpOwotCisgICAgQ2FsbCBvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsMTsKKyAgICBDYWxs
IG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwyOworICAgIHsKKyAgICAgICAgSnVtcCBvd25lcklz
UmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2godm0sIGFyZ3VtZW50R1BSMSwg
YXJndW1lbnRHUFIyKTsKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOworICAgICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgICAgICBvcGVyYXRpb25Xcml0ZUJhcnJp
ZXJDYWxsMSA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgICAgIGppdC5sb2FkUHRy
KGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsKKyAg
ICAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOworICAgIH0KKyAgICB7
CisgICAgICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBDb2RlQmxvY2s6Om9m
ZnNldE9mVW5saW5rZWRDb2RlQmxvY2soKSksIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIEp1bXAg
b3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVu
dEdQUjEsIGFyZ3VtZW50R1BSMik7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsKKyAg
ICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICAgICAgb3BlcmF0aW9uV3Jp
dGVCYXJyaWVyQ2FsbDIgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgICAgICBvd25l
cklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CisgICAgfQogICAgIGppdC5tb3ZlKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBjYW5CZU9wdGltaXplZEdQUik7IC8vIHJlc3RvcmUu
CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmso
JmppdCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBDYWxsIG9wZXJhdGlvbk9wdGltaXpl
Q2FsbDsKQEAgLTEyODksNyArMTMwMiw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSkkKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwsIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsK
KyAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwxLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKSk7Cisg
ICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsMiwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCkpOwogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIGlmIChPcHRpb25zOjp1c2VERkdKSVQoKSkKICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25PcHRpbWl6ZUNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uT3B0aW1pemUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAyOCwxMCArMTAyOCw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0QnlWYWxPcHRp
bWkKICAgICAgICAgaWYgKCFpc0NvcHlPbldyaXRlKGJhc2VPYmplY3QtPmluZGV4aW5nTW9kZSgp
KSAmJiBzdWJzY3JpcHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoc3R1Yklu
Zm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewot
ICAgICAgICAgICAgICAgIGlmIChwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAg
ICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ss
IHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwcm9m
aWxlKQorICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIHJlcGF0Y2hBcnJheVB1
dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0
dWJJbmZvLCBQdXRLaW5kOjpOb3REaXJlY3QsIGVjbWFNb2RlKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMTA5OCwxMCArMTA5Niw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQg
ZGlyZWN0UHV0QnlWYWwKICAgICBpZiAoIWlzQ29weU9uV3JpdGUoYmFzZU9iamVjdC0+aW5kZXhp
bmdNb2RlKCkpICYmIHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3R1Yklu
Zm8tPmNvbnNpZGVyQ2FjaGluZ0dlbmVyaWModm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkgewot
ICAgICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSk7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgICAg
ICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrLCBzdHJ1Y3R1cmUp
OwogICAgICAgICAgICAgcmVwYXRjaEFycmF5UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8sIFB1dEtpbmQ6OkRpcmVjdCwgZWNt
YU1vZGUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQxMiwxMCArMjQwOCw4IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVYKICAgICBpZiAoYmFzZVZhbHVlLmlzQ2Vs
bCgpICYmIHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChzdHVi
SW5mby0+Y29uc2lkZXJDYWNoaW5nR2VuZXJpYyh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKSB7
Ci0gICAgICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIHByb2Zp
bGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJl
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwcm9maWxlKQorICAgICAgICAgICAg
ICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb2RlQmxvY2ssIHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICByZXBhdGNoQXJyYXlHZXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsICpzdHViSW5mbyk7CiAgICAgICAgIH0KICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw3
ICsyNDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RyCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFk
YXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJv
cGVydHksIHJlZ1QzLCByZWdUMik7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJCiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CiAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9
ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0
b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07CiAgICAgICAgICsrbV9nZXRC
eVZhbEluZGV4OwpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92
YWwoY29uc3QgSW5zdHIKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owog
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgQXJyYXlQ
cm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQy
KGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAgICAgZW1pdExv
YWQodmFsdWUsIHJlZ1Q1LCByZWdUNCk7CkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSQogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1f
dmFsdWU7CiAgICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9kZShieXRlY29kZSk7CiAgICAg
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAg
ICAgICBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgICAgICBwcm9maWxl
ID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkK
QEAgLTYyMiwxMSArNjIyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydQogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAotICAgIGlmICgqaWRlbnQgPT0gbV92bS0+
cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAg
ICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1YWwsIEFic29sdXRlQWRk
cmVzcygmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNf
Y2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7Ci0gICAgICAgIGVtaXRB
cnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHJlZ1QyKTsKLSAgICAgICAgbm90QXJyYXlM
ZW5ndGhNb2RlLmxpbmsodGhpcyk7Ci0gICAgfQorICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCBtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZSwgcmVnVDIpOwogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCk7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCkBAIC03OTcsNyArNzk0
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydQogICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0g
Jm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IG1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlOwogCiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdU
MCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2UsIHJlZ1QxKTsKQEAgLTgyMCw3ICs4MTcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaW5fYnlfdmFsKGNvbnN0IEluCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BJbkJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7
CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbElu
ZGV4KytdOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cgogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTkzLDcgKzkzLDcg
QEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdAogICAgIGlmIChoYXNB
bnlTbG93Q2FzZXMoaXRlcikpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlOworICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKIAogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCkBAIC00
MzksNyArNDM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cgog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUg
PSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0g
bWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7
CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29u
c3QgSQogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAgICAgICAgIGVjbWFNb2Rl
ID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgICAgIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9h
cnJheVByb2ZpbGU7CisgICAgICAgIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsK
ICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtMTEwOCwxMSArMTEwOCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICAKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKICAgICAKLSAgICBpZiAoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBB
YnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwotICAg
ICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsICZtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCByZWdUMSk7Ci0gICAgICAg
IG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRoaXMpOwotICAgIH0KKyAgICBpZiAoKmlkZW50ID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisg
ICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgbWV0YWRhdGEubV9h
cnJheVByb2ZpbGUsIHJlZ1QxKTsKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMCk7CiAKQEAgLTE1MTEsNyArMTUwOCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2luX2J5X3ZhbChjb25zdCBJbnN0cnUKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKQEAgLTE1MzgsNyArMTUzNSw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW4KICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBtZXRhZGF0
YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5C
eVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CiAKQEAgLTIzOTMsNyArMjM5MCw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICB9CiAKICAgICBzdGF0aWNfYXNz
ZXJ0KFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzID09IDEpOwotICAgIHN0b3JlNjQocmVn
VDAsIEFkZHJlc3MobWV0YWRhdGFHUFIsIE9CSkVDVF9PRkZTRVRPRihNZXRhZGF0YSwgbV9wcm9m
aWxlKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhtZXRhZGF0YUdQUiwgT0JKRUNUX09GRlNFVE9G
KE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSwgcmVnVDEpOworICAgIHN0b3JlNjQocmVnVDAsIEFkZHJl
c3MocmVnVDEsIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAKICAgICBy
ZXQoKTsKIApAQCAtMjQ0OSw3ICsyNDQ3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSQogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNl
cHRpb25DaGVjayh2bSk7CiAKLSAgICBqaXQuc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUp
KSk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlciwg
T0JKRUNUX09GRlNFVE9GKE1ldGFkYXRhLCBtX3Byb2ZpbGUpKSwgR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpOworICAgIGppdC5zdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwogICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3Rlcik7CiAKICNpZiBDUFUoWDg2XzY0KQpAQCAtMjg4OCw3ICsyODg3LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKAogICAgIFZpcnR1YWxSZWdp
c3RlciBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXg7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5TmFtZSA9IGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lOwogICAgIFZpcnR1YWxSZWdpc3RlciBl
bnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOwotICAgIEFycmF5UHJvZmlsZSogcHJv
ZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNlczsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgaW5saW5l
IEpTVmFsdWUgZ2V0T3BlcmFuZChDYWxsRnJhbWUqIGNhbAogICAgIH0gd2hpbGUgKGZhbHNlKQog
CiAjZGVmaW5lIExMSU5UX1BST0ZJTEVfVkFMVUUodmFsdWUpIGRvIHsgXAotICAgICAgICBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUodmFsdWUpOyBcCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayku
bV9wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyBcCiAgICAg
fSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChjYWxsRnJhbWUs
IGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIFwKQEAgLTc2MSw3ICs3NjEsNyBAQCBzdGF0aWMg
dm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShKCiAgICAgdm0uaGVhcC53cml0ZUJhcnJp
ZXIoY29kZUJsb2NrKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChj
b25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RhdGljIEpTVmFsdWUgcGVyZm9y
bUxMSW50R2V0QnlJRChjb25zdCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEdldEJ5SWRNb2RlTWV0YWRhdGEmIG1ldGFkYXRhLCBBcnJheVBy
b2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04MjQs
OCArODI0LDkgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybUxMSW50R2V0QnlJRChjb25zdAogICAg
IH0gZWxzZSBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBpc0pTQXJyYXkoYmFzZVZh
bHVlKSAmJiBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAgewog
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJheVByb2ZpbGUpOwogICAgICAgICAgICAg
bWV0YWRhdGEuc2V0QXJyYXlMZW5ndGhNb2RlKCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5hcnJh
eUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUodm0pKTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0
cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICB9CiAg
ICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgfQpAQCAtODQxLDcg
Kzg0Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX2Jhc2UpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRH
ZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBpZGVudCwgbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50
R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgaWRlbnQsIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7CiAgICAgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTg1NywxMCArODU4LDEwIEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pdGVyYXRvcl8KICAgICBpZiAoIWl0ZXJhdG9y
LmlzT2JqZWN0KCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKSk7
CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTEludEdldEJ5SUQocGMsIGNvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgbWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcGVyZm9ybUxMSW50R2V0
QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0ZXJhdG9yLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uZXh0LCBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YSwgbnVsbHB0cik7CiAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgbmV4dFJlZ2lzdGVyID0gcmVzdWx0OwotICAgIGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9uZXh0UHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1f
bmV4dFByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAg
IExMSU5UX0VORCgpOwogfQogCkBAIC04NzcsMTAgKzg3OCwxMCBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgaWYgKCFpdGVyYXRvclJldHVybi5pc09iamVj
dCgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOwogCi0gICAg
SlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2Jh
bE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRh
Lm1fZG9uZU1vZGVNZXRhZGF0YSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRH
ZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnBy
b3BlcnR5TmFtZXMtPmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSwgbnVsbHB0cik7
CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgZG9uZVJlZ2lzdGVyID0gcmVzdWx0
OwotICAgIGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9kb25lUHJvZmlsZS5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spLm1fZG9uZVByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogICAgIExMSU5UX0VORCgpOwogfQogCkBAIC04OTQsMTAgKzg5NSwxMCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfCiAgICAgUmVnaXN0ZXImIHZhbHVl
UmVnaXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAg
SlNWYWx1ZSBpdGVyYXRvclJldHVybiA9IHZhbHVlUmVnaXN0ZXIuanNWYWx1ZSgpOwogCi0gICAg
SlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ssIGdsb2Jh
bE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBtZXRhZGF0
YS5tX3ZhbHVlTW9kZU1ldGFkYXRhKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1MTElu
dEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvclJldHVybiwgdm0u
cHJvcGVydHlOYW1lcy0+dmFsdWUsIG1ldGFkYXRhLm1fdmFsdWVNb2RlTWV0YWRhdGEsIG51bGxw
dHIpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIHZhbHVlUmVnaXN0ZXIgPSBy
ZXN1bHQ7Ci0gICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3ZhbHVlUHJvZmlsZS5t
X2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spLm1fdmFsdWVQcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKICAgICBMTElOVF9FTkQoKTsKIH0KIApAQCAtMTAyNCw3ICsxMDI1LDcg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRCeVZhbChWTQogICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNjcmlwdC50cnlHZXRBc1VpbnQzMkluZGV4
KCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9ICppbmRleDsKICAgICAgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICBBcnJheVByb2ZpbGUq
IGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKyAgICAgICAgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUgPSBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAogICAgICAg
ICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoYXNTdHJpbmco
YmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpIHsKQEAgLTE0MjksNyArMTQzMCw3IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwKICAgICBMTElOVF9CRUdJTigpOwog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFsPigpOwogICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFu
ZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX3Byb3BlcnR5KSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0
LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKSwgZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsK
IH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTY3LDcgKzY3LDcgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwg
ZwogICAgICAgICBtb3ZlIHBheWxvYWQsIHQwCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQyKQot
ICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDAp
CisgICAgICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgdDUsIHQxLCB0
MCwgdDIpCiAgICAgICAgIGdldChtX2RzdCwgdDIpCiAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCiAgICAgICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XQpAQCAtODUsNyArODUsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNv
ZGVTdHJ1CiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkg
cjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBtZXRhZGF0YShzaXplLCBvcGNvZGVT
dHJ1Y3QsIHQyLCB0MykKLSAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCB0MiwgcjEsIHIwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIHQyLCByMSwgcjAsIHQzKQogICAgIGRpc3BhdGNoKCkKIAogZW5kCkBAIC02
NzcsOSArNjc3LDEwIEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb24K
ICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHBy
b2ZpbGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQotICAgIHN0b3JlaSB0YWcsICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRb
bWV0YWRhdGFdCi0gICAgc3RvcmVpIHBheWxvYWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W21ldGFkYXRhXQorbWFjcm8g
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB0YWcsIHBh
eWxvYWQsIHNjcmF0Y2gpCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJv
ZmlsZU5hbWUlW21ldGFkYXRhXSwgc2NyYXRjaAorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmls
ZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3NjcmF0Y2hdCisgICAgc3RvcmVpIHBheWxvYWQsIFZh
bHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtzY3JhdGNoXQogZW5kCiAKIApA
QCAtMTQzNyw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGly
ZWN0LAogICAgIGxvYWRpIE9wR2V0QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwg
dDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZERp
cmVjdFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQx
KQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWREaXJlY3QsIG1fcHJvZmlsZSwgdDUsIHQwLCB0
MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkRGlyZWN0LCBtX3Byb2ZpbGUsIHQ1LCB0MCwg
dDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWREaXJlY3RTbG93OgpAQCAt
MTQ1OCwzNyArMTQ1OSwyOSBAQCBtYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1
Y3QsCiAgICAgYmluZXEgdDAsIHQxLCBzbG93TGFiZWwKICAgICBsb2FkaXMgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0
W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAsIHQx
KQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0
MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
dDIsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAogLm9wR2V0QnlJZFByb3RvTG9h
ZDoKLSAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpQcm90b0xvYWQsIC5vcEdl
dEJ5SWRBcnJheUxlbmd0aAorICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlBy
b3RvTG9hZCwgLm9wR2V0QnlJZFVuc2V0CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QzXSwgdDEKICAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRh
dGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKICAgICBiaW5lcSB0Mywg
dDEsIHNsb3dMYWJlbAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCiAgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2Fk
TW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSwgdDMpCiAgICAgcmV0dXJuKHQwLCB0MSkKIAotLm9w
R2V0QnlJZEFycmF5TGVuZ3RoOgotICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6
OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKLSAgICBtb3ZlIHQzLCB0MAotICAgIGFycmF5
UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5hcnJh
eUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQotICAgIGJ0aXogdDAsIElzQXJy
YXksIHNsb3dMYWJlbAotICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFiZWwK
LSAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAotICAgIGxvYWRpIC1zaXpl
b2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0
aFt0MF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCi0gICAgdmFsdWVQcm9maWxlKG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIEludDMyVGFnLCB0MCkKLSAgICByZXR1
cm4oSW50MzJUYWcsIHQwKQorIyBJdCBjYW4ndCBiZSBhcnJheSBsZW5ndGggc2luY2Ugd2UgZG9u
J3QgdXNlIHRoaXMgZm9yIGFyYml0cmFyeSBnZXRfYnlfaWQncyB0aGF0IGNvdWxkCisjIGFjY2Vz
cyAibGVuZ3RoIi4gV2Ugb25seSB1c2UgaXQgZm9yIGl0ZXJhdG9yIG9wY29kZXMgd2hpY2ggYXJl
bid0IHVzaW5nICJsZW5ndGgiIGFzIGFuCisjIGlkZW50aWZpZXIuCiAgICAgCiAub3BHZXRCeUlk
VW5zZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2Fk
aSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUu
c3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAgdmFs
dWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRh
ZywgMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0
MiwgVW5kZWZpbmVkVGFnLCAwLCB0MykKICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiBl
bmQKQEAgLTE1MDYsMjAgKzE0OTksMjAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
aWQsIE9wR2V0QgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BH
ZXRCeUlkU2xvdwogICAgIGxvYWRwIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
LnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0NV0sIHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJp
YWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBt
X3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9m
aWxlLCB0NSwgdDAsIHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRCeUlkQXJy
YXlMZW5ndGg6CiAgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5n
dGgsIC5vcEdldEJ5SWRVbnNldAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNp
emUsIHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCiAgICAgbW92ZSB0MywgdDIKLSAg
ICBhcnJheVByb2ZpbGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJyYXlM
ZW5ndGhNb2RlLmFycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MCkKKyAgICBhcnJheVByb2ZpbGUoT3BH
ZXRCeUlkOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDAsIHQxKQogICAgIGJ0
aXogdDIsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFw
ZU1hc2ssIC5vcEdldEJ5SWRTbG93CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3Qz
XSwgdDAKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6
OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5
SWRTbG93Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgSW50MzJU
YWcsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwgdDUsIEludDMy
VGFnLCB0MCwgdDMpCiAgICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIAogLm9wR2V0QnlJZFVuc2V0
OgpAQCAtMTUyNyw3ICsxNTIwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQs
IE9wR2V0QgogICAgIGxvYWRpIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLnVu
c2V0TW9kZS5zdHJ1Y3R1cmVJRFt0NV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKICAgICBiaW5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKLSAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCBVbmRlZmluZWRUYWcsIDApCisgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxlLCB0NSwgVW5kZWZpbmVkVGFnLCAwLCB0MykK
ICAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQogCiAub3BHZXRCeUlkRGVmYXVsdDoKQEAgLTE1
MzYsNyArMTUyOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEIK
ICAgICBsb2FkaXMgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1v
ZGUuY2FjaGVkT2Zmc2V0W3Q1XSwgdDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQyLCB0MywgdDAsIHQxKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5SWQsIG1fcHJvZmlsZSwg
dDUsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeUlkLCBtX3Byb2ZpbGUsIHQ1LCB0
MCwgdDEsIHQzKQogICAgIHJldHVybih0MCwgdDEpCiAKIC5vcEdldEJ5SWRTbG93OgpAQCAtMTU0
Niw3ICsxNTM5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0Qgog
Lm9zclJldHVyblBvaW50OgogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9n
ZXRfYnlfaWQsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5SWQsIG1fcHJvZmlsZSwgdDIsIHIxLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eUlkLCBtX3Byb2ZpbGUsIHQyLCByMSwgcjAsIHQzKQogICAgIHJldHVybihyMSwgcjApCiAKIGVu
ZCkKQEAgLTE2MjQsNyArMTYxNyw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3Zh
bCwgT3BHZXQKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQogICAgICAgICBzdG9yZWkgSW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCiAgICAgICAgIHN0b3JlaSByZXN1bHRQ
YXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcs
IHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApA
QCAtMTYzMyw3ICsxNjI2LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldAogICAgICAgICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMwogICAgICAgICBz
dG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQogICAgICAgICBzdG9y
ZWkgc2NyYXRjaDIsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikK
KyAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gz
LCBzY3JhdGNoMiwgc2NyYXRjaDEpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQKIApAQCAt
MTY0MSw3ICsxNjM0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dAogICAgIGdldChtX2Jhc2UsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQogICAgIG1vdmUgdDAsIHQy
Ci0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwg
dDIsIHQ1LCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJy
YXlQcm9maWxlLCB0MiwgdDUsIHQxLCB0MykKICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9w
R2V0QnlWYWxTbG93KQogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzCkBA
IC0xNjc4LDcgKzE2NzEsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0CiAub3BHZXRCeVZhbE5vdEVtcHR5OgogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgdmFs
dWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKKyAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxLCB0MykKICAgICBkaXNwYXRj
aCgpCiAKIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CkBAIC0xNjkxLDcgKzE2ODQsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAub3NyUmV0dXJuUG9p
bnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNp
emUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBt
X3Byb2ZpbGUsIHQyLCByMSwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJv
ZmlsZSwgdDIsIHIxLCByMCwgdDMpCiAgICAgcmV0dXJuKHIxLCByMCkKIAogZW5kKQpAQCAtMTcx
Miw3ICsxNzA1LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLAog
ICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRQcml2YXRlTmFt
ZVNsb3cKIAogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEp
Ci0gICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0
MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0NSwgdDAs
IHQxLCB0MykKICAgICByZXR1cm4odDAsIHQxKQogCiAub3BHZXRQcml2YXRlTmFtZVNsb3c6CkBA
IC0xNzc0LDcgKzE3NjcsOCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0
cnVjCiAKICAgICAgICAgLm91dE9mQm91bmRzOgogICAgICAgICAgICAgYmlhZXEgdDMsIC1zaXpl
b2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0
aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKLSAgICAgICAgICAgIHN0b3JlYiAxLCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGVbdDVd
CisgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlW3Q1XSwgdDIKKyAgICAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5U3Rv
cmVUb0hvbGVbdDJdCiAgICAgICAgICAgICBhZGRpIDEsIHQzLCB0MgogICAgICAgICAgICAgc3Rv
cmVpIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Ro
cy5wdWJsaWNMZW5ndGhbdDBdCiAgICAgICAgICAgICBqbXAgLnN0b3JlUmVzdWx0CkBAIC0xNzg1
LDcgKzE3NzksNyBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAg
ICAgICAgIGdldChtX2Jhc2UsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAgICAgICAgbW92
ZSB0MSwgdDIKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQwLCB0MykKICAgICAg
ICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MCwgSW50MzJUYWcsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIGxv
YWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwCkBAIC0xODM5LDcgKzE4MzMsOCBAQCBt
YWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGRpc3BhdGNo
KCkKIAogICAgIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHk6Ci0gICAgICAgIHN0b3JlYiAx
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hv
bGVbdDVdCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVBy
b2ZpbGVbdDVdLCB0MQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3Jl
VG9Ib2xlW3QxXQogICAgICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZl
Y3Rvclt0MF0KICAgICAgICAgYmliIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3BQdXRCeVZhbEFycmF5U3Rv
cmFnZVN0b3JlUmVzdWx0CiAgICAgICAgIGFkZGkgMSwgdDMsIHQxCkBAIC0xODQ3LDcgKzE4NDIs
OCBAQCBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGpt
cCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0CiAKICAgICAub3BQdXRCeVZhbE91
dE9mQm91bmRzOgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2FycmF5UHJvZmlsZS5tX291dE9mQm91bmRzW3Q1XQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAgc3RvcmViIDEs
IEFycmF5UHJvZmlsZTo6bV9vdXRPZkJvdW5kc1t0MV0KICAgICAub3BQdXRCeVZhbFNsb3c6CiAg
ICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAg
ICAgZGlzcGF0Y2goKQpAQCAtMjUxNSw3ICsyNTExLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfZnJvbV9zY29wZSwgTwogICAgIG1hY3JvIGdldFByb3BlcnR5KCkKICAgICAgICAgbG9h
ZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVdLCB0MwogICAgICAgICBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQzLCB0MCwgdDEsIHQyKQotICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKKyAgICAgICAg
dmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQzKQog
ICAgICAgICByZXR1cm4odDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTI0LDcgKzI1MjAsNyBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRwIFRh
Z09mZnNldFt0MF0sIHQxCiAgICAgICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdDBdLCB0MgogICAg
ICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5KHQxKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRG
cm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUsIHQxLCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1LCB0MSwgdDIsIHQzKQogICAgICAgICByZXR1cm4o
dDEsIHQyKQogICAgIGVuZAogCkBAIC0yNTMyLDcgKzI1MjgsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDMKICAgICAgICAgbG9hZHAgSlNMZXhpY2FsRW52aXJv
bm1lbnRfdmFyaWFibGVzICsgVGFnT2Zmc2V0W3QwLCB0MywgOF0sIHQxCiAgICAgICAgIGxvYWRw
IEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyArIFBheWxvYWRPZmZzZXRbdDAsIHQzLCA4
XSwgdDIKLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0RnJvbVNjb3BlLCBtX3Byb2ZpbGUsIHQ1
LCB0MSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9wcm9maWxl
LCB0NSwgdDEsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQxLCB0MikKICAgICBlbmQKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHJldmlzaW9uIDI4MjQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNSAr
NjgsMTYgQEAgbWFjcm8gbWFrZVJldHVyblByb2ZpbGVkKG9wY29kZVN0cnVjdCwgZwogICAgIGZu
KG1hY3JvICh2YWx1ZSkKICAgICAgICAgbW92ZSB2YWx1ZSwgdDMKICAgICAgICAgbWV0YWRhdGEo
dDEsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIHQx
LCB0MykKKyAgICAgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCB0MSwg
dDMsIHQyKQogICAgICAgICBnZXQobV9kc3QsIHQxKQogICAgICAgICBzdG9yZXEgdDMsIFtjZnIs
IHQxLCA4XQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQogZW5kCiAKLW1hY3JvIHZhbHVl
UHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwgdmFsdWUpCi0gICAg
c3RvcmVxIHZhbHVlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9i
dWNrZXRzW21ldGFkYXRhXQorbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgcHJvZmls
ZU5hbWUsIG1ldGFkYXRhLCB2YWx1ZSwgc2NyYXRjaCkKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSVbbWV0YWRhdGFdLCBzY3JhdGNoCisgICAgc3RvcmVx
IHZhbHVlLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0c1tzY3JhdGNoXQogZW5kCiAKICMgQWZ0ZXIg
Y2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJl
IG5vdCB1c2VkLgpAQCAtODcsNyArODgsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXpl
LCBvcGNvZGVTdHJ1CiAgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVjdCwgZHN0VmlydHVhbFJlZ2lz
dGVyLCB0MSkKICAgICBzdG9yZXEgcjAsIFtjZnIsIHQxLCA4XQogICAgIG1ldGFkYXRhKHNpemUs
IG9wY29kZVN0cnVjdCwgdDIsIHQxKQotICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCByMCkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCB0MiwgcjAsIHQzKQogICAgIGRpc3BhdGNoKCkKIGVuZAogCkBAIC0x
NTA5LDcgKzE1MTAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3Qs
CiAgICAgYmluZXEgdDAsIHQxLCAub3BHZXRCeUlkRGlyZWN0U2xvdwogICAgIGxvYWRpIE9wR2V0
QnlJZERpcmVjdDo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKICAgICBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERp
cmVjdCwgbV9wcm9maWxlLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZERpcmVj
dCwgbV9wcm9maWxlLCB0MiwgdDAsIHQxKQogICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZERp
cmVjdFNsb3c6CkBAIC0xNTE4LDcgKzE1MTksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9ieV9pZF9kaXJlY3QsCiBlbmQpCiAKICMgVGhlIGJhc2Ugb2JqZWN0IGlzIGV4cGVjdGVkIGlu
IHQzCi1tYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0
YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVy
bikKK21hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRh
TmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0dXJu
LCBkb0FycmF5UHJvZmlsZSkKICAgICBtZXRhZGF0YSh0MiwgdDEpCiAgICAgbG9hZGIgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCiAKQEAg
LTE1MjksNyArMTUzMCw3IEBAIG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVj
dCwKICAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAogICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRb
dDJdLCB0MQogICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAg
ICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDApCisg
ICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0
MSkKICAgICByZXR1cm4odDApCiAKIC5vcEdldEJ5SWRQcm90b0xvYWQ6CkBAIC0xNTQwLDI3ICsx
NTQxLDI3IEBAIG1hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwKICAgICBs
b2FkaXMgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9M
b2FkTW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQogICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdFt0Ml0s
IHQzCiAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQotICAgIHZh
bHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCkKKyAgICB2
YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQog
ICAgIHJldHVybih0MCkKIAogLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgogICAgIGJibmVxIHQxLCBj
b25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKICAgICBt
b3ZlIHQzLCB0MAotICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVt
b2RlTWV0YWRhdGFOYW1lJS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1
KQorICAgIGRvQXJyYXlQcm9maWxlKHQwLCB0MiwgdDUsIHQxKQogICAgIGJ0aXogdDAsIElzQXJy
YXksIHNsb3dMYWJlbAogICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFiZWwK
ICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwLCB0MSkK
ICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVu
Z3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJpbHQgdDAsIDAsIHNsb3dMYWJlbAogICAg
IG9ycSBudW1iZXJUYWcsIHQwCi0gICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgdDIsIHQwKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCiAgICAgcmV0dXJuKHQwKQogCiAub3BHZXRCeUlkVW5z
ZXQ6CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBsb2FkaSAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3Ry
dWN0dXJlSURbdDJdLCB0MAogICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCi0gICAgdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFZhbHVlVW5kZWZpbmVk
KQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBW
YWx1ZVVuZGVmaW5lZCwgdDEpCiAgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQogCiBlbmQKQEAg
LTE1NjgsNyArMTU2OSwxMCBAQCBlbmQKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lk
LCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQogICAgIGdldChtX2Jhc2UsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNp
emUsIHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCi0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BH
ZXRCeUlkLCBtX21vZGVNZXRhZGF0YSwgbV9wcm9maWxlLCAub3BHZXRCeUlkU2xvdywgc2l6ZSwg
bWV0YWRhdGEsIHJldHVybikKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEdldEJ5SWQsIG1f
bW9kZU1ldGFkYXRhLCBtX3Byb2ZpbGUsIC5vcEdldEJ5SWRTbG93LCBzaXplLCBtZXRhZGF0YSwg
cmV0dXJuLAorICAgICAgICBtYWNybyAoY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNj
cmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZSwgY2VsbEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNj
cmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgZW5kKQogCiAub3BHZXRCeUlkU2xvdzoKICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfaWQpCkBAIC0xNTc3LDcgKzE1ODEs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAub3NyUmV0dXJu
UG9pbnQ6CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV9pZCwg
c2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwg
bV9wcm9maWxlLCB0MiwgcjApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgbV9wcm9maWxl
LCB0MiwgcjAsIHQzKQogICAgIHJldHVybihyMCkKIAogZW5kKQpAQCAtMTY5OCw3ICsxNzAyLDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogICAgIG1hY3JvIGZp
bmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNo
KQogICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQorICAgICAgICB2YWx1
ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0LCBzY3JhdGNoKQogICAg
ICAgICBkaXNwYXRjaCgpCiAgICAgZW5kCiAKQEAgLTE3MTksNyArMTcyMyw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAogICAgIG1vdmUgdDAsIHQy
Ci0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwg
dDIsIHQ1LCB0MSkKKyAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJy
YXlQcm9maWxlLCB0MiwgdDUsIHQxLCB0MykKIAogICAgIGdldChtX3Byb3BlcnR5LCB0MykKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNs
b3cpCkBAIC0xNzU5LDcgKzE3NjMsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92
YWwsIE9wR2V0CiAKIC5vcEdldEJ5VmFsRG9uZToKICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4
XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgIGRpc3Bh
dGNoKCkKIAogLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKQEAgLTE3NzIsNyArMTc3Niw3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXQKIC5vc3JSZXR1cm5Q
b2ludDoKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwg
c2l6ZSkKICAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IG1fcHJvZmlsZSwgdDUsIHIwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQ1LCByMCwgdDMpCiAgICAgcmV0dXJuKHIwKQogCiBlbmQpCkBAIC0xNzk0LDcgKzE3OTgs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUsCiAKICAgICBsb2Fk
aSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQogICAgIGxvYWRQ
cm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKLSAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0MiwgdDApCisgICAgdmFsdWVQcm9maWxlKE9wR2V0
UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDIsIHQwLCB0MykKICAgICByZXR1cm4odDApCiAKIC5v
cEdldFByaXZhdGVOYW1lU2xvdzoKQEAgLTE4OTcsNyArMTkwMSw4IEBAIG1hY3JvIHB1dEJ5VmFs
T3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKIAogICAgICAgICAub3V0T2ZCb3VuZHM6CiAgICAg
ICAgICAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVy
Ojp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRPZkJvdW5kcwotICAg
ICAgICAgICAgc3RvcmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2Zp
bGUubV9tYXlTdG9yZVRvSG9sZVt0NV0KKyAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGVbdDVdLCB0MgorICAgICAgICAgICAgc3RvcmViIDEs
IEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0Ml0KICAgICAgICAgICAgIGFkZGkgMSwg
dDMsIHQyCiAgICAgICAgICAgICBzdG9yZWkgdDIsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJ
bmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0KICAgICAgICAgICAgIGpt
cCAuc3RvcmVSZXN1bHQKQEAgLTE5MDcsNyArMTkxMiw3IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bj
b2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
c2l6ZSwgdDAsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIG1vdmUgdDEsIHQyCiAgICAg
ICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDApCisgICAgICAgIGFycmF5UHJv
ZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQw
LCB0MykKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgICAgIHN4
aTJxIHQzLCB0MwpAQCAtMTk2Miw3ICsxOTY3LDggQEAgbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBkaXNwYXRjaCgpCiAKICAgICAub3BQdXRCeVZhbEFy
cmF5U3RvcmFnZUVtcHR5OgotICAgICAgICBzdG9yZWIgMSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZS5tX21heVN0b3JlVG9Ib2xlW3Q1XQorICAgICAgICBsb2FkcCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlW3Q1XSwgdDEKKyAgICAgICAg
c3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0MV0KICAgICAgICAgYWRk
aSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCiAgICAgICAgIGJpYiB0
MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVi
bGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogICAgICAg
ICBhZGRpIDEsIHQzLCB0MQpAQCAtMTk3MCw3ICsxOTc2LDggQEAgbWFjcm8gcHV0QnlWYWxPcChv
cGNvZGVOYW1lLCBvcGNvZGVTdHJ1YwogICAgICAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0b3Jh
Z2VTdG9yZVJlc3VsdAogCiAgICAgLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoKLSAgICAgICAgc3Rv
cmViIDEsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9vdXRPZkJv
dW5kc1t0NV0KKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZVt0NV0sIHQxCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fb3V0T2ZC
b3VuZHNbdDFdCiAgICAgLm9wUHV0QnlWYWxTbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKQEAgLTI2NjIs
NyArMjY2OSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KICAg
ICBtYWNybyBnZXRQcm9wZXJ0eSgpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRh
ZGF0YTo6bV9vcGVyYW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDAsIHQyKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1f
cHJvZmlsZSwgdDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1f
cHJvZmlsZSwgdDUsIHQyLCB0MykKICAgICAgICAgcmV0dXJuKHQyKQogICAgIGVuZAogCkBAIC0y
NjcwLDE0ICsyNjc3LDE0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUs
IE8KICAgICAgICAgbG9hZHAgT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOjptX29wZXJhbmRbdDVd
LCB0MAogICAgICAgICBsb2FkcSBbdDBdLCB0MAogICAgICAgICB0ZHpDaGVja0lmTmVjZXNzYXJ5
KHQwKQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQwKQorICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRGcm9tU2NvcGUsIG1fcHJvZmlsZSwgdDUs
IHQwLCB0MykKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCiAgICAgbWFjcm8gZ2V0Q2xv
c3VyZVZhcigpCiAgICAgICAgIGxvYWRwIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6bV9vcGVy
YW5kW3Q1XSwgdDEKICAgICAgICAgbG9hZHEgSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVz
W3QwLCB0MSwgOF0sIHQwCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9w
cm9maWxlLCB0NSwgdDApCisgICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEZyb21TY29wZSwgbV9w
cm9maWxlLCB0NSwgdDAsIHQzKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKQEAgLTMw
MDIsNyArMzAwOSw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3Jfb3BlbiwgT3AK
IAogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQzKQogICAgIGJ0cW56IHQzLCBu
b3RDZWxsTWFzaywgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdwotICAgIHBlcmZvcm1H
ZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVuLCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmls
ZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3Jl
TmV4dEFuZERpc3BhdGNoKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JPcGVu
LCBtX21vZGVNZXRhZGF0YSwgbV9uZXh0UHJvZmlsZSwgLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXRO
ZXh0U2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlTmV4dEFuZERpc3BhdGNoLCBtYWNybyhhLCBi
LCBjLCBkKSBlbmQpCiAKIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CiAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKQEAgLTMw
NjEsNyArMzA2OCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3AK
IAogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzKQogICAgIGJ0cW56IHQzLCBub3RD
ZWxsTWFzaywgLmdldERvbmVTbG93Ci0gICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRv
ck5leHQsIG1fZG9uZU1vZGVNZXRhZGF0YSwgbV9kb25lUHJvZmlsZSwgLmdldERvbmVTbG93LCBz
aXplLCBtZXRhZGF0YSwgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSkKKyAgICBwZXJmb3JtR2V0
QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9m
aWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dldFZh
bHVlLCBtYWNybyhhLCBiLCBjLCBkKSBlbmQpCiAKIC5nZXREb25lU2xvdzoKICAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQpAQCAtMzA4Niw3
ICszMDkzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcAogICAg
ICMgUmVsb2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBt
YXkgaGF2ZSBjbG9iYmVyZWQgdDMuCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMp
CiAgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVyYXRvciByZXN1bHQgaXMg
YSBjZWxsIGhlcmUgc2luY2Ugd2Ugd2lsbCBoYXZlIHRocm93biBhbiBlcnJvciBiZWZvcmUuCi0g
ICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck5leHQsIG1fdmFsdWVNb2RlTWV0YWRh
dGEsIG1fdmFsdWVQcm9maWxlLCAuZ2V0VmFsdWVTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVW
YWx1ZUFuZERpc3BhdGNoKQorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0
LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6
ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCwgbWFjcm8oYSwgYiwgYywgZCkgZW5k
KQogCiAuZ2V0VmFsdWVTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2l0
ZXJhdG9yX25leHRfZ2V0X3ZhbHVlKQpAQCAtMzE4Myw3ICszMTkwLDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9lbnVtZXJhdG9yX2dldF9ieQogICAgIGxvYWRxIGNvbnN0ZXhwciAoKG9mZnNl
dEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSkgKiBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKVt0MCwgdDIsIDhdLCB0MgogCiAuZG9uZToKLSAgICB2YWx1ZVByb2ZpbGUoT3BFbnVtZXJh
dG9yR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyKQorICAgIHZhbHVlUHJvZmlsZShPcEVudW1l
cmF0b3JHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQzKQogICAgIHJldHVybih0MikKIAog
LmdldFNsb3dQYXRoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkp
CkBAIC00MTMsNiArNDEzLDExIEBAIG1hY3JvIG1ldGFkYXRhKHNpemUsIG9wY29kZSwgZHN0LCBz
Y3JhdGMKICAgICBtdWxpIHNpemVvZiAlb3Bjb2RlJTo6TWV0YWRhdGEsIHNjcmF0Y2ggIyBzY3Jh
dGNoICo9IHNpemVvZihPcDo6TWV0YWRhdGEpCiAgICAgYWRkaSBzY3JhdGNoLCBkc3QgIyBvZmZz
ZXQgKz0gc2NyYXRjaAogICAgIGFkZHAgbWV0YWRhdGFUYWJsZSwgZHN0ICMgcmV0dXJuICZtZXRh
ZGF0YVRhYmxlW29mZnNldF0KKyAgICAjIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZihNZXRh
ZGF0YSksIGRzdCkKKyAgICBjb25zdCBhZGRlciA9IChjb25zdGV4cHIgKGFsaWdub2YoJW9wY29k
ZSU6Ok1ldGFkYXRhKSkpIC0gMQorICAgIGNvbnN0IG1hc2sgPSB+YWRkZXIKKyAgICBhZGRwIGFk
ZGVyLCBkc3QKKyAgICBhbmRwIG1hc2ssIGRzdAogZW5kCiAKIG1hY3JvIGp1bXBJbXBsKGRpc3Bh
dGNoSW5kaXJlY3QsIHRhcmdldE9mZnNldFJlZykKQEAgLTEyODcsMTEgKzEyOTIsMTIgQEAgbWFj
cm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTgogICAgIGxvYWRpIExMSW50UmV0
dXJuUENbY2ZyXSwgUEMKIGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5k
SW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKK21hY3JvIGFycmF5UHJvZmlsZShvZmZz
ZXQsIGNlbGxBbmRJbmRleGluZ1R5cGUsIG1ldGFkYXRhLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiAg
ICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKICAgICBjb25zdCBpbmRleGluZ1R5
cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFtjZWxsXSwgc2NyYXRjaAotICAgIHN0b3JlaSBzY3JhdGNoLCBvZmZzZXQgKyBBcnJheVByb2Zp
bGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFttZXRhZGF0YV0KKyAgICBsb2FkcCBvZmZzZXRbbWV0
YWRhdGFdLCBzY3JhdGNoMgorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwg
c2NyYXRjaDEKKyAgICBzdG9yZWkgc2NyYXRjaDEsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0
cnVjdHVyZUlEW3NjcmF0Y2gyXQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVBbmRN
aXNjW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCkBAIC0xNjE1LDggKzE2MjEsOCBAQCBtYWNy
byBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAgICAgYWRkcCAtcHJvZmlsZUFy
Z1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xl
CiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAwLCBvayBlbmQpCiAgICAgYnRweiB0
MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRW
YWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6
bV9kYXRhW3QxXSwgdDMKLSAgICBidHB6IHQzLCAuYXJndW1lbnRQcm9maWxlRG9uZSAjIFdoZW4g
d2UgY2FuJ3QgSklULCB3ZSBkb24ndCBhbGxvY2F0ZSBhbnkgYXJndW1lbnQgdmFsdWUgcHJvZmls
ZXMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0MV0sIHQzCisgICAgbG9h
ZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fdmFsdWVQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0
b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0M10sIHQzCiAgICAgbXVscCBzaXplb2Yg
VmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9u
IQogICAgIGxzaGlmdHAgMywgdDAgIyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3VtZW50cyBv
biB0aGUgc3RhY2suCiAgICAgYWRkcCB0MiwgdDMgIyBwb2ludGVyIHRvIGVuZCBvZiBWYWx1ZVBy
b2ZpbGUgYXJyYXkgaW4gQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcy4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckJ5dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsOCArMzcsNyBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNl
KENvZGVCCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7
ICsraSkgewotICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9s
b2NrKTsKLSAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9m
aWxlRm9yQXJndW1lbnQoaSkuYnJpZWZEZXNjcmlwdGlvbihsb2NrZXIpOworICAgICAgICBDU3Ry
aW5nIGRlc2NyaXB0aW9uID0gY29kZUJsb2NrLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChpKS5i
cmllZkRlc2NyaXB0aW9uKCk7CiAgICAgICAgIGlmICghZGVzY3JpcHRpb24ubGVuZ3RoKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgb3V0LnJlc2V0KCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCShyZXZpc2lvbiAyODI0
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MTYsNiArMTkxNiw5IEBAIHB1YmxpYzoKIAogICAgIFVubGlua2Vk
Q29kZUJsb2NrOjpSYXJlRGF0YSogcmFyZURhdGEoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlRGF0YS5kZWNvZGUoZGVjb2Rlcik7IH0KIAorICAgIHVuc2lnbmVkIG51bVZh
bHVlUHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX251bVZhbHVlUHJvZmlsZXM7IH0KKyAgICB1
bnNpZ25lZCBudW1BcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1BcnJheVByb2Zp
bGVzOyB9CisKIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdGhpc1JlZ2lzdGVyOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CkBAIC0xOTQ3LDYgKzE5NTAsOSBA
QCBwcml2YXRlOgogICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9udW1QYXJh
bWV0ZXJzOwogCisgICAgdW5zaWduZWQgbV9udW1WYWx1ZVByb2ZpbGVzOworICAgIHVuc2lnbmVk
IG1fbnVtQXJyYXlQcm9maWxlczsKKwogICAgIENhY2hlZE1ldGFkYXRhVGFibGUgbV9tZXRhZGF0
YTsKIAogICAgIENhY2hlZFB0cjxDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YT4gbV9yYXJlRGF0YTsK
QEAgLTIxNTIsNiArMjE1OCw4IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVu
bGlua2UKICAgICAsIG1fbWV0YWRhdGEoY2FjaGVkQ29kZUJsb2NrLm1ldGFkYXRhKGRlY29kZXIp
KQogICAgICwgbV9pbnN0cnVjdGlvbnMoY2FjaGVkQ29kZUJsb2NrLmluc3RydWN0aW9ucyhkZWNv
ZGVyKSkKIAorICAgICwgbV92YWx1ZVByb2ZpbGVzKGNhY2hlZENvZGVCbG9jay5udW1WYWx1ZVBy
b2ZpbGVzKCkpCisgICAgLCBtX2FycmF5UHJvZmlsZXMoY2FjaGVkQ29kZUJsb2NrLm51bUFycmF5
UHJvZmlsZXMoKSkKICAgICAsIG1fcmFyZURhdGEoY2FjaGVkQ29kZUJsb2NrLnJhcmVEYXRhKGRl
Y29kZXIpKQogewogfQpAQCAtMjMyMiw2ICsyMzMwLDggQEAgQUxXQVlTX0lOTElORSB2b2lkIENh
Y2hlZENvZGVCbG9jazxDb2RlQgogICAgIG1fbnVtVmFycyA9IGNvZGVCbG9jay5tX251bVZhcnM7
CiAgICAgbV9udW1DYWxsZWVMb2NhbHMgPSBjb2RlQmxvY2subV9udW1DYWxsZWVMb2NhbHM7CiAg
ICAgbV9udW1QYXJhbWV0ZXJzID0gY29kZUJsb2NrLm1fbnVtUGFyYW1ldGVyczsKKyAgICBtX251
bVZhbHVlUHJvZmlsZXMgPSBjb2RlQmxvY2subV92YWx1ZVByb2ZpbGVzLnNpemUoKTsKKyAgICBt
X251bUFycmF5UHJvZmlsZXMgPSBjb2RlQmxvY2subV9hcnJheVByb2ZpbGVzLnNpemUoKTsKICAg
ICBtX2ZlYXR1cmVzID0gY29kZUJsb2NrLm1fZmVhdHVyZXM7CiAgICAgbV9sZXhpY2FsU2NvcGVG
ZWF0dXJlcyA9IGNvZGVCbG9jay5tX2xleGljYWxTY29wZUZlYXR1cmVzOwogICAgIG1fcGFyc2VN
b2RlID0gY29kZUJsb2NrLm1fcGFyc2VNb2RlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyODI0NjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgUFJPRklM
RV9WQUxVRV9JTih2YWx1ZV9fLCBtX3Byb2ZpbGUpCiAKICNkZWZpbmUgUFJPRklMRV9WQUxVRV9J
Tih2YWx1ZSwgcHJvZmlsZU5hbWUpIGRvIHsgXAotICAgICAgICBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spLnByb2ZpbGVOYW1lLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSk7IFwKKyAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5wcm9maWxlTmFtZS0+
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgXAogICAgIH0gd2hpbGUgKGZh
bHNlKQogCiBzdGF0aWMgdm9pZCB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCkBAIC04ODcsNyAr
ODg3LDcgQEAgQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVyblR5cGUgaXRlcmF0bwogICAgIEpT
Q2VsbCogaXRlcmFibGUgPSBHRVQoYnl0ZWNvZGUubV9pdGVyYWJsZSkuanNWYWx1ZSgpLmFzQ2Vs
bCgpOwogICAgIGlmIChhdXRvIGFycmF5SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJ
dGVyYXRvcio+KHZtLCBpdGVyYXRvcikpIHsKICAgICAgICAgaWYgKGF1dG8gYXJyYXkgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXkqPih2bSwgaXRlcmFibGUpKSB7Ci0gICAgICAgICAgICBtZXRhZGF0
YS5tX2l0ZXJhYmxlUHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYXJyYXktPnN0cnVjdHVyZUlE
KCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUtPm9ic2VydmVTdHJ1
Y3R1cmVJRChhcnJheS0+c3RydWN0dXJlSUQoKSk7CiAKICAgICAgICAgICAgIG1ldGFkYXRhLm1f
aXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzID0gbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0
YS5zZWVuTW9kZXMgfCBJdGVyYXRpb25Nb2RlOjpGYXN0QXJyYXk7CiAgICAgICAgICAgICBhdXRv
JiBpbmRleFNsb3QgPSBhcnJheUl0ZXJhdG9yLT5pbnRlcm5hbEZpZWxkKEpTQXJyYXlJdGVyYXRv
cjo6RmllbGQ6OkluZGV4KTsKQEAgLTk1MSw3ICs5NTEsOSBAQCBKU0NfREVGSU5FX0NPTU1PTl9T
TE9XX1BBVEgoc2xvd19wYXRoX3RvCiBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX2VudGVyKQogewogICAgIEJFR0lOKCk7Ci0gICAgSGVhcDo6aGVhcChjb2RlQmxvY2spLT53
cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICBIZWFwJiBoZWFwID0gKkhlYXA6OmhlYXAoY29k
ZUJsb2NrKTsKKyAgICBoZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgIGhlYXAud3Jp
dGVCYXJyaWVyKGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKSk7CiAgICAgRU5EKCk7CiB9
CiAKQEAgLTk5Myw3ICs5OTUsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX2VuCiAgICAgQVNTRVJUKCFiYXNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAg
SlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3Ry
dWN0dXJlSUQoYmFzZS0+c3RydWN0dXJlSUQoKSk7CisgICAgbWV0YWRhdGEubV9hcnJheVByb2Zp
bGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlLT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgIEpTU3Ry
aW5nKiBuYW1lID0gZW51bWVyYXRvci0+Y29tcHV0ZU5leHQoZ2xvYmFsT2JqZWN0LCBiYXNlLCBp
bmRleCwgbW9kZSk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CkBAIC0xMDE3LDcgKzEwMTksNyBA
QCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAgICAgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0ganNDYXN0PEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcio+KEdFVChieXRlY29kZS5tX2VudW1lcmF0b3IpLmpzVmFsdWUoKSk7CiAgICAgdW5zaWdu
ZWQgaW5kZXggPSBHRVQoYnl0ZWNvZGUubV9pbmRleCkuanNWYWx1ZSgpLmFzSW50MzIoKTsKIAot
ICAgIFJFVFVSTl9QUk9GSUxFRChDb21tb25TbG93UGF0aHM6Om9wRW51bWVyYXRvckdldEJ5VmFs
KGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIGluZGV4LCBtb2RlLCBlbnVt
ZXJhdG9yLCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUsICZtZXRhZGF0YS5tX2VudW1lcmF0b3JN
ZXRhZGF0YSkpOworICAgIFJFVFVSTl9QUk9GSUxFRChDb21tb25TbG93UGF0aHM6Om9wRW51bWVy
YXRvckdldEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIGluZGV4
LCBtb2RlLCBlbnVtZXJhdG9yLCBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgJm1ldGFkYXRhLm1f
ZW51bWVyYXRvck1ldGFkYXRhKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChz
bG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpCkBAIC0xMDQwLDcgKzEwNDIsNyBAQCBKU0Nf
REVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VuCiAgICAgfQogCiAgICAgSlNTdHJp
bmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1
ZSgpKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGds
b2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdHJpbmcsICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkp
KTsKKyAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2Jh
bE9iamVjdCwgYmFzZVZhbHVlLCBzdHJpbmcsIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOwog
fQogCiBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfaGFz
X293bl9wcm9wZXJ0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwCShyZXZpc2lvbiAyODI0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEyIEBACiAjaW5jbHVk
ZSAiSlNTY29wZS5oIgogCiAjaW5jbHVkZSAiQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCIKKyNpbmNs
dWRlICJEZWZlclRlcm1pbmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCisjaW5jbHVkZSAiVk1UcmFwc0lubGluZXMu
aCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNTQsNyArNTYsNyBAQCBERUZJTkVfVklTSVRfQ0hJTERSRU4oSlNTY29wZSk7CiBzdGF0aWMg
aW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBHZXRPclB1dCBnZXRPclB1
dCwgc2l6ZV90IGRlcHRoLCBib29sJiBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgUmVzb2x2ZU9w
JiBvcCwgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgRGVmZXJUZXJtaW5hdGlvbkZvckFXaGlsZSBkZWZlclNjb3Bl
KHZtKTsKIAogICAgIGlmIChzY29wZS0+aXNKU0xleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAg
ICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNM
ZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7CkBAIC04MCw4ICs4Miw5IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgaWYgKHNjb3BlLT50eXBlKCkg
PT0gTW9kdWxlRW52aXJvbm1lbnRUeXBlKSB7CiAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25t
ZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oc2Nv
cGUpOwogICAgICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IG1v
ZHVsZUVudmlyb25tZW50LT5tb2R1bGVSZWNvcmQoKTsKKyAgICAgICAgICAgIGF1dG8gY2F0Y2hT
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgICAgICAgICAgQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUlt
cG9ydChnbG9iYWxPYmplY3QsIGlkZW50KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOworICAgICAgICAgICAgY2F0Y2hTY29wZS5yZWxlYXNlQXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gQWJz
dHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CiAgICAgICAg
ICAgICAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQqIGltcG9ydGVkUmVjb3JkID0gcmVzb2x1dGlv
bi5tb2R1bGVSZWNvcmQ7CiAgICAgICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1w
b3J0ZWRFbnZpcm9ubWVudCA9IGltcG9ydGVkUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOwpA
QCAtMzA0LDkgKzMwNyw2IEBAIEpTT2JqZWN0KiBKU1Njb3BlOjpyZXNvbHZlKEpTR2xvYmFsT2Jq
ZWMKIAogUmVzb2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBzaXplX3QgZGVwdGhPZmZzZXQsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgR2V0T3JQdXQgZ2V0T3JQdXQsIFJlc29sdmVUeXBlIHVubGlua2Vk
VHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSkKIHsKLSAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0KICAgICBSZXNvbHZlT3Agb3AoRHluYW1pYywgMCwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgMCk7CiAgICAgaWYgKHVubGlua2VkVHlwZSA9PSBEeW5hbWljKQog
ICAgICAgICByZXR1cm4gb3A7CkBAIC0zMTUsNyArMzE1LDYgQEAgUmVzb2x2ZU9wIEpTU2NvcGU6
OmFic3RyYWN0UmVzb2x2ZShKU0dsbwogICAgIHNpemVfdCBkZXB0aCA9IGRlcHRoT2Zmc2V0Owog
ICAgIGZvciAoOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgpKSB7CiAgICAgICAgIGJvb2wg
c3VjY2VzcyA9IGFic3RyYWN0QWNjZXNzKGdsb2JhbE9iamVjdCwgc2NvcGUsIGlkZW50LCBnZXRP
clB1dCwgZGVwdGgsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCBvcCwgaW5pdGlhbGl6YXRpb25N
b2RlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBSZXNvbHZlT3Ao
RHluYW1pYywgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCkpOwogICAgICAgICBpZiAo
c3VjY2VzcykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICArK2RlcHRoOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjgyNDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk3LDEw
ICsxNTk3LDYgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKAogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFtcGVkQXJyYXkpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50MTZBcnJheSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1VpbnQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCB3ZWFrU2V0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVjNjhmMWYKQEAgLTE2
NTQsNiArMTY1MCwxMSBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
CiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxl
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV2YWxFeGVjdXRhYmxl
KSAvLyBIYXNoOjB4OTU4ZTNlOWQKIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVS
X1NMT1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEz
YwogCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZh
bENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2spCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKK0RZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NM
T1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKKwogI3VuZGVmIERZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKIAogSlNDZWxsKiBWTTo6c2VudGluZWxT
ZXRCdWNrZXRTbG93KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNp
b24gMjgyNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAzLDEwICs2MDMsNiBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih1aW50OENsYW1wZWRBcnJheVNwYWNlKQogICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDE2QXJyYXlTcGFjZSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQzMkFycmF5U3BhY2UpCi0gICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkK
LSAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tTcGFjZSkKLSAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQotICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJlZlNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNwYWNl
KQpAQCAtNjc4LDE5ICs2NzQsMjUgQEAgcHVibGljOgogICAgIAogICAgIFNwYWNlQW5kU2V0IGNv
ZGVCbG9ja1NwYWNlOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZv
ckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgLy8g
VGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSBiZWNhdXNl
IHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAgLy8gSlNDOjpDb2RlQmxvY2su
Ci0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0KLQogICAgIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCiAgICAgRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZSkKICAgICBTcGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKICAgICBTcGFjZUFu
ZFNldCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOwogCisgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VU
X0RFRklORV9NRU1CRVIodW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19T
UEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNl
KQorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVf
TUVNQkVSKHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlKQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hVbmxpbmtlZENvZGVCbG9ja1NwYWNlKGNvbnN0
IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBmdW5jKG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
U3BhY2UuZ2V0KCkpOworICAgICAgICBmdW5jKG1fdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1Nw
YWNlLmdldCgpKTsKKyAgICAgICAgZnVuYyhtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
a1NwYWNlLmdldCgpKTsKKyAgICAgICAgZnVuYyhtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1Nw
YWNlLmdldCgpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438391</attachid>
            <date>2021-09-16 13:08:36 -0700</date>
            <delta_ts>2021-09-16 13:40:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>24600</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyNTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDIxLTA5LTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgc29tZSBwcm9maWxpbmcgdG8gVW5saW5rZWRDb2RlQmxvY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA3OAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODI5NDc1NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFVubGlua2VkVmFsdWVQcm9maWxlIGFuZCBVbmxp
bmtlZEFycmF5UHJvZmlsZSB0bworICAgICAgICBVbmxpbmtlZENvZGVCbG9jay4gVGhlc2UgcHJv
ZmlsZXMgc2VyaWFsaXplIHRoZSBkYXRhIGluIFZhbHVlUHJvZmlsZQorICAgICAgICBhbmQgQXJy
YXlQcm9maWxlLiBFYWNoIHRpbWUgYSBDb2RlQmxvY2sgdXBkYXRlcyB2YWx1ZSBwcm9maWxlcywK
KyAgICAgICAgaXQgbWl4ZXMgaW4gdXAgdG8gZGF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB1bmxp
bmtlZCBwcm9maWxlcywgYW5kCisgICAgICAgIGFsc28gd3JpdGVzIGJhY2sgZGF0YSB0byB0aGUg
dW5saW5rZWQgcHJvZmlsZXMsIHNvIHRoZSBkYXRhIGlzIHNoYXJlZAorICAgICAgICBiZXR3ZWVu
IENvZGVCbG9ja3Mgb2YgdGhlIHNhbWUgVW5saW5rZWRDb2RlQmxvY2suCisgICAgICAgIAorICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgYSBwcmUtZXhpc3RpbmcgYnVnIHdoZXJlIHdlIHdv
dWxkIHNvbWV0aW1lcyB0aGluaworICAgICAgICB3ZSBoYWQgbW9yZSBtZXRhZGF0YSB0YWJsZSBl
bnRyaWVzIHRoYW4gd2UgcmVhbGx5IGhhZCBpbiBwcmFjdGljZS4gVGhpcyBpcworICAgICAgICBi
ZWNhdXNlIE1ldGFkYXRhVGFibGU6OmZvckVhY2ggdXNlZCB0aGUgbmV4dCBvcGNvZGUncyBzdGFy
dCBwb2ludGVyLiBUaGF0CisgICAgICAgIHBvaW50ZXIgd2FzIGFsaWduZWQgdG8gdGhhdCBvcGNv
ZGUncyBtZXRhZGF0YSBhbGlnbm1lbnQuIFNvIHRoYXQgbWlnaHQgbWFrZQorICAgICAgICB0aGUg
cHJldmlvdXMgb3Bjb2RlIHRoaW5rIGl0IGhhZCBhbiBleHRyYSAxLTcgZW50cmllcyAoZGVwZW5k
aW5nIG9uIHNpemUsCisgICAgICAgIGFsaWdubWVudCwgZXRjKS4gVGhpcyBwYXRjaCBmaXhlcyB0
aGF0IGJ5IGhhdmluZyB0aGUgbmV4dCBvcGNvZGUncyBzdGFydAorICAgICAgICBvZmZzZXQgaW4g
dGhlIHRhYmxlIGFsd2F5cyBiZSB0aGUgZW5kIG9mZnNldCBvZiB0aGUgcHJldmlvdXMgb3Bjb2Rl
LCBhbmQgd2UKKyAgICAgICAgYWxpZ24gdGhlIHN0YXJ0IHBvaW50ZXIgd2hlbiB1c2luZyBpdC4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgd2FzIG1lYXN1cmVkIGFzIGEgfjAuNSUgc3BlZWR1cCBv
biBTcGVlZG9tZXRlcjIuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRBcnJheVByb2ZpbGU6OnVwZGF0ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJl
ZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRh
dGVBbGxBcnJheVByb2ZpbGVQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
dXBkYXRlQWxsQXJyYXlQcmVkaWN0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWV0YWRhdGEpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNo
QXJyYXlQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RGVhbGxvY1RhYmxlOjp3aXRoT3Bjb2RlVHlwZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRh
YmxlOjpnZXQpOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpmb3JFYWNoKToKKyAgICAg
ICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6Z2V0V2l0aG91dEFsaWduaW5nKToKKyAgICAgICAgKEpT
Qzo6TWV0YWRhdGFUYWJsZTo6Z2V0SW1wbCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
YWxsb2NhdGVTaGFyZWRQcm9maWxlcyk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnVubGlua2VkVmFsdWVQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnVubGlua2VkQXJyYXlQ
cm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6ZSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpmaW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRh
dGFUYWJsZTo6aXNGaW5hbGl6ZWQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFi
bGU6Omhhc01ldGFkYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFi
bGVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJsZTo6bnVtRW50
cmllcyk6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkVmFsdWVQcm9maWxlOjp1cGRhdGUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2s6Om51bVZhbHVlUHJvZmlsZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2s6Om51bUFycmF5UHJvZmlsZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDYWNo
ZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZSk6CisKIDIwMjEtMDktMTYgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydGluZyByMjgyNDc4LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BcnJheVByb2ZpbGUuaAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogCitzdHJ1Y3QgVW5saW5rZWRBcnJheVByb2ZpbGU7CisKIC8vIFRoaXMg
aXMgYSBiaXRmaWVsZCB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzIGFuIHR5cGUgb2YgYXJyYXkg
YWNjZXNzIHRoYXQgd2UgaGF2ZSBzZWVuLgogLy8gVGhlcmUgYXJlIDE5IGluZGV4aW5nIHR5cGVz
IHRoYXQgdXNlIHRoZSBsb3dlciBiaXRzLgogLy8gVGhlcmUgYXJlIDkgdHlwZWQgYXJyYXkgdHlw
ZXMgdGFraW5nIHRoZSBiaXRzIDE2IHRvIDI1LgpAQCAtMTk1LDYgKzE5Nyw3IEBAIGlubGluZSBi
b29sIGhhc1NlZW5Db3B5T25Xcml0ZUFycmF5KEFycmEKIAogY2xhc3MgQXJyYXlQcm9maWxlIHsK
ICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgIGZyaWVuZCBzdHJ1Y3QgVW5saW5rZWRB
cnJheVByb2ZpbGU7CiAKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBcnJheVByb2ZpbGUoKQpAQCAt
MjQ5LDQgKzI1Miw0NSBAQCBwcml2YXRlOgogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5
UHJvZmlsZSkgPT0gMTIpOwogCitzdHJ1Y3QgVW5saW5rZWRBcnJheVByb2ZpbGUgeworICAgIFVu
bGlua2VkQXJyYXlQcm9maWxlKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCB1cGRhdGUoQXJyYXlQ
cm9maWxlJiBhcnJheVByb2ZpbGUpCisgICAgeworICAgICAgICBBcnJheU1vZGVzIG5ld01vZGVz
ID0gYXJyYXlQcm9maWxlLm1fb2JzZXJ2ZWRBcnJheU1vZGVzIHwgbV9vYnNlcnZlZEFycmF5TW9k
ZXM7CisgICAgICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzID0gbmV3TW9kZXM7CisgICAgICAgIGFy
cmF5UHJvZmlsZS5tX29ic2VydmVkQXJyYXlNb2RlcyA9IG5ld01vZGVzOworCisgICAgICAgIGlm
IChtX21heVN0b3JlVG9Ib2xlKQorICAgICAgICAgICAgYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVU
b0hvbGUgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX21heVN0b3JlVG9Ib2xl
ID0gYXJyYXlQcm9maWxlLm1fbWF5U3RvcmVUb0hvbGU7CisKKyAgICAgICAgaWYgKG1fb3V0T2ZC
b3VuZHMpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9vdXRPZkJvdW5kcyA9IHRydWU7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fb3V0T2ZCb3VuZHMgPSBhcnJheVByb2ZpbGUubV9v
dXRPZkJvdW5kczsKKworICAgICAgICBpZiAobV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMp
CisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMg
PSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX21heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcyA9IGFycmF5UHJvZmlsZS5tX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlczsKKwor
ICAgICAgICBpZiAoIW1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKQorICAgICAgICAgICAg
YXJyYXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gYXJy
YXlQcm9maWxlLm1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHsgMCB9OworICAgIC8vIFdl
IGtlZXAgdGhlc2UgYXMgZnVsbCBieXRlLXNpemVkIGJvb2xlYW5zIGp1c3QgZm9yIHNwZWVkLCBi
ZWNhdXNlIHRoZQorICAgIC8vIGFsaWdubWVudCBvZiB0aGlzIHN0cnVjdCB3aWxsIGFscmVhZHkg
bWFrZSB1cyA4IGJ5dGVzIGxhcmdlLiBCdXQgaWYgd2UKKyAgICAvLyBldmVyIG5lZWQgdG8gYWRk
IG1vcmUgc3R1ZmYsIHRoZXNlIGZpZWxkcyBjYW4gYmVjb21lIGJpdGZpZWxkcy4KKyAgICBib29s
IG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9vdXRPZkJvdW5kcyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyB7IHRydWUgfTsKK307CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDI4MjU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODkzLDYgKzI4
OTMsNyBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAgICAgbnVt
YmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJPZlNhbXBs
ZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVt
YmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZhbHVlIHBy
b2ZpbGVzIGFyZSBmdWxsLgogCisgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGZvckVhY2hW
YWx1ZVByb2ZpbGUoWyZdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSwgYm9vbCBpc0FyZ3VtZW50KSB7
CiAgICAgICAgIHVuc2lnbmVkIG51bVNhbXBsZXMgPSBwcm9maWxlLnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgPT0gMSk7CkBAIC0yOTAxLDExICsyOTAyLDEzIEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxWYWx1ZVByb2ZpbGVQcmUKICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBu
dW1TYW1wbGVzOwogICAgICAgICBpZiAoaXNBcmd1bWVudCkgewogICAgICAgICAgICAgcHJvZmls
ZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgIHVubGlua2Vk
Q29kZUJsb2NrKCktPnVubGlua2VkVmFsdWVQcm9maWxlKGluZGV4KyspLnVwZGF0ZShwcm9maWxl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocHJvZmlsZS5u
dW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAgICAgICAg
ICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgICAgIHByb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIHVubGlua2VkQ29k
ZUJsb2NrKCktPnVubGlua2VkVmFsdWVQcm9maWxlKGluZGV4KyspLnVwZGF0ZShwcm9maWxlKTsK
ICAgICB9KTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CkBAIC0yOTI5LDEzICsyOTMyLDQ5IEBA
IHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICB1cGRhdGVBbGxW
YWx1ZVByb2ZpbGVQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3MoaWdub3JlZFZhbHVlMSwgaWdu
b3JlZFZhbHVlMik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRpY3Rp
b25zKCkKK3ZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByb2ZpbGVQcmVkaWN0aW9ucyhj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikKIHsKLSAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCi0gICAgZm9yRWFjaEFycmF5UHJvZmlsZShbJl0oQXJy
YXlQcm9maWxlJiBwcm9maWxlKSB7CisgICAgaWYgKCFtX21ldGFkYXRhKQorICAgICAgICByZXR1
cm47CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisKKyAgICBhdXRvIHByb2Nlc3MgPSBbJl0g
KEFycmF5UHJvZmlsZSYgcHJvZmlsZSkgewogICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihsb2NrZXIsIHRoaXMpOworICAgICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT51
bmxpbmtlZEFycmF5UHJvZmlsZShpbmRleCsrKS51cGRhdGUocHJvZmlsZSk7CisgICAgfTsKKwor
ICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2Rl
OjpBcnJheUxlbmd0aCkKKyAgICAgICAgICAgIHByb2Nlc3MobWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgLy8gV2UgcmVzZXJ2ZSBhbiBpbmRleCBwZXIgR2V0QnlJZCB3aGV0aGVyIG9yIG5vdCBp
dCdzIGN1cnJlbnRseSBpbiBBcnJheUxlbmd0aCBtb2RlLgorICAgICAgICAgICAgKytpbmRleDsK
KyAgICAgICAgfQogICAgIH0pOworCisjZGVmaW5lIFZJU0lUMShfX29wKSBcCisgICAgbV9tZXRh
ZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IHByb2Nlc3MobWV0YWRh
dGEubV9hcnJheVByb2ZpbGUpOyB9KTsKKworI2RlZmluZSBWSVNJVDIoX19vcCkgXAorICAgIG1f
bWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBwcm9jZXNzKG1l
dGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlKTsgfSk7CisKKyAgICBGT1JfRUFD
SF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKFZJU0lUMSkKKyAgICBGT1JfRUFDSF9PUENPREVf
V0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhWSVNJVDIpCisKKyN1bmRlZiBWSVNJVDEKKyN1bmRl
ZiBWSVNJVDIKKworICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgcHJvY2VzcyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJv
ZmlsZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRp
Y3Rpb25zKCkKK3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAg
ICB1cGRhdGVBbGxBcnJheVByb2ZpbGVQcmVkaWN0aW9ucyhsb2NrZXIpOwogICAgIAogICAgIGZv
ckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKFsmXShBcnJheUFsbG9jYXRpb25Qcm9maWxlJiBw
cm9maWxlKSB7CiAgICAgICAgIHByb2ZpbGUudXBkYXRlUHJvZmlsZSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjgyNTY1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC00ODksNyArNDg5LDYgQEAgcHVibGljOgogICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVl
UHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5dGVjb2RlSW5kZXgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9p
ZCBmb3JFYWNoVmFsdWVQcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFycmF5QWxsb2NhdGlv
blByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgZm9yRWFjaE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5m
byhjb25zdCBGdW5jdG9yJik7CkBAIC03ODcsNiArNzg2LDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBzaG91bGRPcHRpbWl6ZU5vdygpOwogICAgIHZvaWQgdXBkYXRlQWxsVmFsdWVQcm9maWxlUHJl
ZGljdGlvbnMoKTsKKyAgICB2b2lkIHVwZGF0ZUFsbEFycmF5UHJvZmlsZVByZWRpY3Rpb25zKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOwogICAgIHZvaWQgdXBkYXRlQWxsQXJyYXlQcmVkaWN0
aW9ucygpOwogICAgIHZvaWQgdXBkYXRlQWxsUHJlZGljdGlvbnMoKTsKIApAQCAtODg2LDcgKzg4
Niw4IEBAIHB1YmxpYzoKICAgICBNZXRhZGF0YSYgbWV0YWRhdGEoT3Bjb2RlSUQgb3Bjb2RlSUQs
IHVuc2lnbmVkIG1ldGFkYXRhSUQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9tZXRhZGF0YSk7
Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TWV0YWRhdGEqPihtX21ldGFkYXRhLT5nZXQo
b3Bjb2RlSUQpKVttZXRhZGF0YUlEXTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChvcGNvZGVJRCwg
b3Bjb2RlSUQgPT0gTWV0YWRhdGE6Om9wY29kZUlEKTsKKyAgICAgICAgcmV0dXJuIG1fbWV0YWRh
dGEtPmdldDxNZXRhZGF0YT4oKVttZXRhZGF0YUlEXTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBNZXRhZGF0YT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjEsMzMgKzYxLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29u
cwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBDb2RlQmxvY2s6OmZvckVh
Y2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKLXsKLSAgICBpZiAobV9tZXRhZGF0
YSkgewotICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUg
PT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQotICAgICAgICAgICAgICAgIGZ1bmMobWV0YWRh
dGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7Ci0gICAgICAg
IH0pOwotCi0jZGVmaW5lIFZJU0lUMShfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxf
X29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9hcnJheVByb2ZpbGUp
OyB9KTsKLQotI2RlZmluZSBWSVNJVDIoX19vcCkgXAotICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fY2FsbExpbmtJbmZv
Lm1fYXJyYXlQcm9maWxlKTsgfSk7Ci0KLSAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfQVJS
QVlfUFJPRklMRShWSVNJVDEpCi0gICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0xMSU5UX0NB
TExfTElOS19JTkZPKFZJU0lUMikKLQotI3VuZGVmIFZJU0lUMQotI3VuZGVmIFZJU0lUMgotCi0g
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BJdGVyYXRvck5leHQ+KFsmXSAoYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubV9pdGVyYWJsZVByb2ZpbGUpOwot
ICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lk
IENvZGVCbG9jazo6Zm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUoY29uc3QgRnVuY3RvciYg
ZnVuYykKIHsKICAgICBpZiAobV9tZXRhZGF0YSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAkocmV2aXNpb24gMjgyNTY1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw5ICs0NCwxMSBAQCBzdHJ1Y3QgRGVhbGxvY1RhYmxlIHsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICBzdGF0aWMgdm9pZCB3aXRoT3Bjb2RlVHlwZShNZXRh
ZGF0YVRhYmxlKiB0YWJsZSkKICAgICB7Ci0gICAgICAgIHRhYmxlLT5mb3JFYWNoPE9wPihbXShh
dXRvJiBlbnRyeSkgewotICAgICAgICAgICAgZW50cnkufk1ldGFkYXRhKCk7Ci0gICAgICAgIH0p
OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihPcDo6b3Bjb2Rl
SUQpIDwgTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEEpIHsKKyAgICAgICAgICAgIHRh
YmxlLT5mb3JFYWNoPE9wPihbXShhdXRvJiBlbnRyeSkgeworICAgICAgICAgICAgICAgIGVudHJ5
Ln5NZXRhZGF0YSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiB9OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgJ
KHJldmlzaW9uIDI4MjU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRh
ZGF0YVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE4ICs0NiwyMiBAQCBjbGFzcyBNZXRh
ZGF0YVRhYmxlIHsKIHB1YmxpYzoKICAgICB+TWV0YWRhdGFUYWJsZSgpOwogCi0gICAgQUxXQVlT
X0lOTElORSBJbnN0cnVjdGlvbjo6TWV0YWRhdGEqIGdldChPcGNvZGVJRCBvcGNvZGVJRCkKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KKyAgICBBTFdBWVNfSU5MSU5FIE1ldGFkYXRh
KiBnZXQoKQogICAgIHsKKyAgICAgICAgYXV0byBvcGNvZGVJRCA9IE1ldGFkYXRhOjpvcGNvZGVJ
RDsKICAgICAgICAgQVNTRVJUKG9wY29kZUlEIDwgTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfTUVU
QURBVEEpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbjo6TWV0
YWRhdGEqPihnZXRJbXBsKG9wY29kZUlEKSk7CisgICAgICAgIHVpbnRwdHJfdCBwdHIgPSBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihnZXRXaXRob3V0QWxpZ25pbmcob3Bjb2RlSUQpKTsKKyAgICAg
ICAgcHRyID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKE1ldGFkYXRhKSwgcHRyKTsKKyAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNZXRhZGF0YSo+KHB0cik7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGZvckVhY2goY29uc3QgRnVuY3RvciYgZnVuYykKICAgICB7Ci0gICAgICAgIGF1dG8q
IG1ldGFkYXRhID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldChPcDo6
b3Bjb2RlSUQpKTsKLSAgICAgICAgYXV0byogZW5kID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIE9w
OjpNZXRhZGF0YSo+KGdldEltcGwoT3A6Om9wY29kZUlEICsgMSkpOwotICAgICAgICBmb3IgKDsg
bWV0YWRhdGEgKyAxIDw9IGVuZDsgKyttZXRhZGF0YSkKKyAgICAgICAgYXV0byogbWV0YWRhdGEg
PSBnZXQ8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhPigpOworICAgICAgICBhdXRvKiBlbmQgPSBiaXR3
aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhKj4oZ2V0V2l0aG91dEFsaWduaW5nKE9wOjpv
cGNvZGVJRCArIDEpKTsKKyAgICAgICAgZm9yICg7IG1ldGFkYXRhIDwgZW5kOyArK21ldGFkYXRh
KQogICAgICAgICAgICAgZnVuYygqbWV0YWRhdGEpOwogICAgIH0KIApAQCAtMTE2LDcgKzEyMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBvZmZzZXRUYWJsZTMyKClbaV07CiAgICAgfQog
Ci0gICAgQUxXQVlTX0lOTElORSB1aW50OF90KiBnZXRJbXBsKHVuc2lnbmVkIGkpCisgICAgQUxX
QVlTX0lOTElORSB1aW50OF90KiBnZXRXaXRob3V0QWxpZ25pbmcodW5zaWduZWQgaSkKICAgICB7
CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgZ2V0T2Zmc2V0
KGkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzE2LDQgKzMxNiwzNyBAQCBpbnQgVW5saW5rZWRDb2RlQmxvY2s6Om91dE9mTGluZUp1
bXBPZmZzCiAgICAgcmV0dXJuIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuZ2V0KGJ5dGVjb2RlT2Zm
c2V0KTsKIH0KIAordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YWxsb2NhdGVTaGFyZWRQcm9maWxl
cygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fbWV0YWRhdGEtPmlzRmluYWxpemVkKCkpOwor
CisgICAgeworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhbHVlUHJvZmlsZXMgPSBudW1QYXJh
bWV0ZXJzKCk7CisgICAgICAgIGlmIChtX21ldGFkYXRhLT5oYXNNZXRhZGF0YSgpKSB7CisjZGVm
aW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBt
X21ldGFkYXRhLT5udW1FbnRyaWVzPF9fb3A+KCk7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENP
REVfV0lUSF9WQUxVRV9QUk9GSUxFKENPVU5UKQorI3VuZGVmIENPVU5UCisgICAgICAgICAgICBu
dW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
T3Blbj4oKSAqIDM7CisgICAgICAgICAgICBudW1iZXJPZlZhbHVlUHJvZmlsZXMgKz0gbV9tZXRh
ZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9yTmV4dD4oKSAqIDM7CisgICAgICAgIH0KKworICAg
ICAgICBtX3ZhbHVlUHJvZmlsZXMgPSBGaXhlZFZlY3RvcjxVbmxpbmtlZFZhbHVlUHJvZmlsZT4o
bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKTsKKyAgICB9CisKKyAgICBpZiAobV9tZXRhZGF0YS0+aGFz
TWV0YWRhdGEoKSkgeworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFycmF5UHJvZmlsZXMgPSAw
OworCisjZGVmaW5lIENPVU5UKF9fb3ApIFwKKyAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVz
ICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8X19vcD4oKTsKKyAgICAgICAgRk9SX0VBQ0hfT1BD
T0RFX1dJVEhfQVJSQVlfUFJPRklMRShDT1VOVCkKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJ
VEhfTExJTlRfQ0FMTF9MSU5LX0lORk8oQ09VTlQpCisjdW5kZWYgQ09VTlQKKyAgICAgICAgbnVt
YmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8T3BJdGVyYXRvck5l
eHQ+KCk7CisgICAgICAgIG51bWJlck9mQXJyYXlQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1F
bnRyaWVzPE9wR2V0QnlJZD4oKTsKKworICAgICAgICBtX2FycmF5UHJvZmlsZXMgPSBGaXhlZFZl
Y3RvcjxVbmxpbmtlZEFycmF5UHJvZmlsZT4obnVtYmVyT2ZBcnJheVByb2ZpbGVzKTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4MjU2NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
QXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKQEAgLTM4LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkTWV0YWRhdGFUYWJsZS5oIgorI2luY2x1ZGUg
IlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CkBAIC02OCw4ICs3MCw2IEBA
IGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2RlQmxvY2tUeXBlPgogY2xhc3MgQ2FjaGVkQ29kZUJsb2NrOwogCi10eXBlZGVmIHVuc2ln
bmVkIFVubGlua2VkVmFsdWVQcm9maWxlOwotdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5
UHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRBcnJheUFsbG9jYXRpb25Qcm9maWxl
OwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlw
ZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwpAQCAtMzM0LDYgKzMzNCw5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWV0YWRhdGEtPnNpemVJbkJ5dGVzKCk7CiAg
ICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVNoYXJlZFByb2ZpbGVzKCk7CisgICAgVW5saW5rZWRW
YWx1ZVByb2ZpbGUmIHVubGlua2VkVmFsdWVQcm9maWxlKHVuc2lnbmVkIGluZGV4KSB7IHJldHVy
biBtX3ZhbHVlUHJvZmlsZXNbaW5kZXhdOyB9CisgICAgVW5saW5rZWRBcnJheVByb2ZpbGUmIHVu
bGlua2VkQXJyYXlQcm9maWxlKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBtX2FycmF5UHJvZmls
ZXNbaW5kZXhdOyB9CiAKIHByb3RlY3RlZDoKICAgICBVbmxpbmtlZENvZGVCbG9jayhWTSYsIFN0
cnVjdHVyZSosIENvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYsIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+KTsKQEAgLTQ2Miw2ICs0NjUsOCBAQCBwcml2YXRlOgogICAgIE91dE9m
TGluZUp1bXBUYXJnZXRzIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogICAgIEZpeGVkVmVjdG9yPEV4cHJlc3Npb25SYW5n
ZUluZm8+IG1fZXhwcmVzc2lvbkluZm87CisgICAgRml4ZWRWZWN0b3I8VW5saW5rZWRWYWx1ZVBy
b2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZEFycmF5UHJv
ZmlsZT4gbV9hcnJheVByb2ZpbGVzOwogCiBwcm90ZWN0ZWQ6CiAgICAgREVDTEFSRV9WSVNJVF9D
SElMRFJFTjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjgyNTY1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw3IEBAIHZvaWQgVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXoKICAgICB7CiAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2NvZGVCbG9jay0+Y2VsbExvY2soKSB9OwogICAgICAgICBtX2NvZGVCbG9jay0+bV9p
bnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CisgICAgICAgIG1fY29kZUJsb2Nr
LT5hbGxvY2F0ZVNoYXJlZFByb2ZpbGVzKCk7CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX21ldGFk
YXRhLT5maW5hbGl6ZSgpOwogCiAgICAgICAgIG1fY29kZUJsb2NrLT5tX2p1bXBUYXJnZXRzID0g
V1RGTW92ZShtX2p1bXBUYXJnZXRzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwCShyZXZpc2lvbiAy
ODI1NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0
YVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDEwIEBAIHZvaWQgVW5saW5r
ZWRNZXRhZGF0YVRhYmxlOjpmaW5hbGl6ZSgpCiAgICAgICAgICAgICAgICAgYnVmZmVyW2ldID0g
b2Zmc2V0OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnVmZmVyW2ldID0gb2Zmc2V0OyAvLyBXZSBhbGlnbiB3aGVuIHdlIGFjY2VzcyB0aGlz
LgogICAgICAgICAgICAgdW5zaWduZWQgYWxpZ25tZW50ID0gbWV0YWRhdGFBbGlnbm1lbnQoc3Rh
dGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKICAgICAgICAgICAgIG9mZnNldCA9IHJvdW5kVXBUb011
bHRpcGxlT2YoYWxpZ25tZW50LCBvZmZzZXQpOwogICAgICAgICAgICAgQVNTRVJUKGFsaWdubWVu
dCA8PSBzX21heE1ldGFkYXRhQWxpZ25tZW50KTsKLSAgICAgICAgICAgIGJ1ZmZlcltpXSA9IG9m
ZnNldDsKICAgICAgICAgICAgIG9mZnNldCArPSBudW1iZXJPZkVudHJpZXMgKiBtZXRhZGF0YVNp
emUoc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKICAgICAgICAgfQogICAgICAgICBidWZmZXJb
c19vZmZzZXRUYWJsZUVudHJpZXMgLSAxXSA9IG9mZnNldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgJKHJl
dmlzaW9uIDI4MjU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZE1ldGFkYXRhVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVbmxpbmtlZE1ldGFkYXRhVGFibGUpOwog
ICAgIH0KIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZT4KKyAgICB1bnNpZ25lZCBu
dW1FbnRyaWVzKCk7CisKKyAgICBib29sIGlzRmluYWxpemVkKCkgeyByZXR1cm4gbV9pc0ZpbmFs
aXplZDsgfQorICAgIGJvb2wgaGFzTWV0YWRhdGEoKSB7IHJldHVybiBtX2hhc01ldGFkYXRhOyB9
CisKIHByaXZhdGU6CiAgICAgZW51bSBFbXB0eVRhZyB7IEVtcHR5IH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0
YWRhdGFUYWJsZUlubGluZXMuaAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNiArNzMsMTQgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBVbmxpbmtlZE1l
dGFkYXRhVAogICAgIHJldHVybiBwcmVwcm9jZXNzQnVmZmVyKClbb3Bjb2RlSURdKys7CiB9CiAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZT4KK0FMV0FZU19JTkxJTkUgdW5zaWduZWQgVW5s
aW5rZWRNZXRhZGF0YVRhYmxlOjpudW1FbnRyaWVzKCkKK3sKKyAgICBjb25zdGV4cHIgYXV0byBv
cGNvZGVJRCA9IEJ5dGVjb2RlOjpvcGNvZGVJRDsKKyAgICBBU1NFUlQoIW1faXNGaW5hbGl6ZWQg
JiYgb3Bjb2RlSUQgPCBzX29mZnNldFRhYmxlRW50cmllcyAtIDEpOworICAgIHJldHVybiBwcmVw
cm9jZXNzQnVmZmVyKClbb3Bjb2RlSURdOworfQorCiBBTFdBWVNfSU5MSU5FIHNpemVfdCBVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OnNpemVJbkJ5dGVzKCkKIHsKICAgICBpZiAobV9pc0ZpbmFsaXpl
ZCAmJiAhbV9oYXNNZXRhZGF0YSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDI4MjU2NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCAr
MzYsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0cnVjdCBVbmxpbmtlZFZhbHVlUHJvZmls
ZTsKKwogdGVtcGxhdGU8dW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+CiBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7CisgICAgZnJpZW5kIHN0cnVjdCBVbmxpbmtlZFZhbHVlUHJvZmls
ZTsKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzID0gbnVt
YmVyT2ZCdWNrZXRzQXJndW1lbnQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1i
ZXJPZlNwZWNGYWlsQnVja2V0cyA9IDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBi
dWNrZXRJbmRleE1hc2sgPSBudW1iZXJPZkJ1Y2tldHMgLSAxOwpAQCAtMjEzLDQgKzIxNywxOCBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKK3N0cnVjdCBVbmxpbmtlZFZh
bHVlUHJvZmlsZSB7CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisKKyAg
ICB2b2lkIHVwZGF0ZShWYWx1ZVByb2ZpbGUmIHByb2ZpbGUpCisgICAgeworICAgICAgICBTcGVj
dWxhdGVkVHlwZSBuZXdUeXBlID0gcHJvZmlsZS5tX3ByZWRpY3Rpb24gfCBtX3ByZWRpY3Rpb247
CisgICAgICAgIHByb2ZpbGUubV9wcmVkaWN0aW9uID0gbmV3VHlwZTsKKyAgICAgICAgbV9wcmVk
aWN0aW9uID0gbmV3VHlwZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRlZFR5cGUg
bV9wcmVkaWN0aW9uIHsgU3BlY05vbmUgfTsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY5
LDcgKzEwNjksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwb3BMZXhpY2FsU2Nv
cGUoVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqKTsKICAgICAgICAgdm9pZCBwcmVwYXJlTGV4aWNh
bFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBS
ZWdpc3RlcklEKiBsb29wU3ltYm9sVGFibGUpOwogICAgICAgICBpbnQgbGFiZWxTY29wZURlcHRo
KCkgY29uc3Q7Ci0gICAgICAgIFVubGlua2VkQXJyYXlQcm9maWxlIG5ld0FycmF5UHJvZmlsZSgp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHJldmlzaW9uIDI4MjU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDEzLDYgKzQxMywxMSBA
QCBtYWNybyBtZXRhZGF0YShzaXplLCBvcGNvZGUsIGRzdCwgc2NyYXRjCiAgICAgbXVsaSBzaXpl
b2YgJW9wY29kZSU6Ok1ldGFkYXRhLCBzY3JhdGNoICMgc2NyYXRjaCAqPSBzaXplb2YoT3A6Ok1l
dGFkYXRhKQogICAgIGFkZGkgc2NyYXRjaCwgZHN0ICMgb2Zmc2V0ICs9IHNjcmF0Y2gKICAgICBh
ZGRwIG1ldGFkYXRhVGFibGUsIGRzdCAjIHJldHVybiAmbWV0YWRhdGFUYWJsZVtvZmZzZXRdCisg
ICAgIyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YoTWV0YWRhdGEpLCBkc3QpCisgICAgY29u
c3QgYWRkZXIgPSAoY29uc3RleHByIChhbGlnbm9mKCVvcGNvZGUlOjpNZXRhZGF0YSkpKSAtIDEK
KyAgICBjb25zdCBtYXNrID0gfmFkZGVyCisgICAgYWRkcCBhZGRlciwgZHN0CisgICAgYW5kcCBt
YXNrLCBkc3QKIGVuZAogCiBtYWNybyBqdW1wSW1wbChkaXNwYXRjaEluZGlyZWN0LCB0YXJnZXRP
ZmZzZXRSZWcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MTYsNiArMTkxNiw5IEBA
IHB1YmxpYzoKIAogICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogcmFyZURhdGEoRGVj
b2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YS5kZWNvZGUoZGVjb2Rlcik7
IH0KIAorICAgIHVuc2lnbmVkIG51bVZhbHVlUHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX251
bVZhbHVlUHJvZmlsZXM7IH0KKyAgICB1bnNpZ25lZCBudW1BcnJheVByb2ZpbGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9udW1BcnJheVByb2ZpbGVzOyB9CisKIHByaXZhdGU6CiAgICAgVmlydHVhbFJl
Z2lzdGVyIG1fdGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0
ZXI7CkBAIC0xOTQ3LDYgKzE5NTAsOSBAQCBwcml2YXRlOgogICAgIGludCBtX251bUNhbGxlZUxv
Y2FsczsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzOwogCisgICAgdW5zaWduZWQgbV9udW1WYWx1
ZVByb2ZpbGVzOworICAgIHVuc2lnbmVkIG1fbnVtQXJyYXlQcm9maWxlczsKKwogICAgIENhY2hl
ZE1ldGFkYXRhVGFibGUgbV9tZXRhZGF0YTsKIAogICAgIENhY2hlZFB0cjxDYWNoZWRDb2RlQmxv
Y2tSYXJlRGF0YT4gbV9yYXJlRGF0YTsKQEAgLTIxNTQsNiArMjE2MCw4IEBAIEFMV0FZU19JTkxJ
TkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2UKIAogICAgICwgbV9yYXJlRGF0YShjYWNoZWRD
b2RlQmxvY2sucmFyZURhdGEoZGVjb2RlcikpCiB7CisgICAgbV92YWx1ZVByb2ZpbGVzID0gRml4
ZWRWZWN0b3I8VW5saW5rZWRWYWx1ZVByb2ZpbGU+KGNhY2hlZENvZGVCbG9jay5udW1WYWx1ZVBy
b2ZpbGVzKCkpOworICAgIG1fYXJyYXlQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFVubGlua2VkQXJy
YXlQcm9maWxlPihjYWNoZWRDb2RlQmxvY2subnVtQXJyYXlQcm9maWxlcygpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KQEAgLTIzMjgsNiArMjMzNiw4IEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxvY2s8Q29kZUIKICAgICBtX2NvZGVHZW5lcmF0aW9u
TW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9uTW9kZTsKICAgICBtX2NvZGVUeXBlID0g
Y29kZUJsb2NrLm1fY29kZVR5cGU7CiAgICAgbV9oYXNDaGVja3BvaW50cyA9IGNvZGVCbG9jay5t
X2hhc0NoZWNrcG9pbnRzOworICAgIG1fbnVtVmFsdWVQcm9maWxlcyA9IGNvZGVCbG9jay5tX3Zh
bHVlUHJvZmlsZXMuc2l6ZSgpOworICAgIG1fbnVtQXJyYXlQcm9maWxlcyA9IGNvZGVCbG9jay5t
X2FycmF5UHJvZmlsZXMuc2l6ZSgpOwogCiAgICAgbV9tZXRhZGF0YS5lbmNvZGUoZW5jb2Rlciwg
Y29kZUJsb2NrLm1fbWV0YWRhdGEuZ2V0KCkpOwogICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29k
ZXIsIGNvZGVCbG9jay5tX3JhcmVEYXRhLmdldCgpKTsK
</data>
<flag name="review"
          id="461753"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="461761"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438393</attachid>
            <date>2021-09-16 13:29:19 -0700</date>
            <delta_ts>2021-09-16 14:32:58 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>24563</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyNTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDIxLTA5LTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgc29tZSBwcm9maWxpbmcgdG8gVW5saW5rZWRDb2RlQmxvY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA3OAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODI5NDc1NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgVW5saW5rZWRWYWx1ZVByb2ZpbGUgYW5kIFVubGlu
a2VkQXJyYXlQcm9maWxlIHRvCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrLiBUaGVzZSBwcm9m
aWxlcyBzZXJpYWxpemUgdGhlIGRhdGEgaW4gVmFsdWVQcm9maWxlCisgICAgICAgIGFuZCBBcnJh
eVByb2ZpbGUuIEVhY2ggdGltZSBhIENvZGVCbG9jayB1cGRhdGVzIHZhbHVlIHByb2ZpbGVzLAor
ICAgICAgICBpdCBtaXhlcyBpbiB1cCB0byBkYXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIHVubGlu
a2VkIHByb2ZpbGVzLCBhbmQKKyAgICAgICAgYWxzbyB3cml0ZXMgYmFjayBkYXRhIHRvIHRoZSB1
bmxpbmtlZCBwcm9maWxlcywgc28gdGhlIGRhdGEgaXMgc2hhcmVkCisgICAgICAgIGJldHdlZW4g
Q29kZUJsb2NrcyBvZiB0aGUgc2FtZSBVbmxpbmtlZENvZGVCbG9jay4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIHByZS1leGlzdGluZyBidWcgd2hlcmUgd2Ugd291
bGQgc29tZXRpbWVzIHRoaW5rCisgICAgICAgIHdlIGhhZCBtb3JlIG1ldGFkYXRhIHRhYmxlIGVu
dHJpZXMgdGhhbiB3ZSByZWFsbHkgaGFkIGluIHByYWN0aWNlLiBUaGlzIGlzCisgICAgICAgIGJl
Y2F1c2UgTWV0YWRhdGFUYWJsZTo6Zm9yRWFjaCB1c2VkIHRoZSBuZXh0IG9wY29kZSdzIHN0YXJ0
IHBvaW50ZXIuIFRoYXQKKyAgICAgICAgcG9pbnRlciB3YXMgYWxpZ25lZCB0byB0aGF0IG9wY29k
ZSdzIG1ldGFkYXRhIGFsaWdubWVudC4gU28gdGhhdCBtaWdodCBtYWtlCisgICAgICAgIHRoZSBw
cmV2aW91cyBvcGNvZGUgdGhpbmsgaXQgaGFkIGFuIGV4dHJhIDEtNyBlbnRyaWVzIChkZXBlbmRp
bmcgb24gc2l6ZSwKKyAgICAgICAgYWxpZ25tZW50LCBldGMpLiBUaGlzIHBhdGNoIGZpeGVzIHRo
YXQgYnkgaGF2aW5nIHRoZSBuZXh0IG9wY29kZSdzIHN0YXJ0CisgICAgICAgIG9mZnNldCBpbiB0
aGUgdGFibGUgYWx3YXlzIGJlIHRoZSBlbmQgb2Zmc2V0IG9mIHRoZSBwcmV2aW91cyBvcGNvZGUs
IGFuZCB3ZQorICAgICAgICBhbGlnbiB0aGUgc3RhcnQgcG9pbnRlciB3aGVuIHVzaW5nIGl0Lgor
ICAgICAgICAKKyAgICAgICAgVGhpcyB3YXMgbWVhc3VyZWQgYXMgYSB+MC41JSBzcGVlZHVwIG9u
IFNwZWVkb21ldGVyMi4KKworICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBkYXRlKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVk
aWN0aW9uc0FuZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0
ZUFsbEFycmF5UHJvZmlsZVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1
cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjptZXRhZGF0YSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hB
cnJheVByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpEZWFsbG9jVGFibGU6OndpdGhPcGNvZGVUeXBlKToKKyAgICAg
ICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFi
bGU6OmdldCk6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OmZvckVhY2gpOgorICAgICAg
ICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpnZXRXaXRob3V0QWxpZ25pbmcpOgorICAgICAgICAoSlND
OjpNZXRhZGF0YVRhYmxlOjpnZXRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjph
bGxvY2F0ZVNoYXJlZFByb2ZpbGVzKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dW5saW5rZWRWYWx1ZVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dW5saW5rZWRBcnJheVBy
b2ZpbGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0
YVRhYmxlOjppc0ZpbmFsaXplZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6aGFzTWV0YWRhdGEpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJs
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpudW1FbnRy
aWVzKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRWYWx1ZVByb2ZpbGU6OnVwZGF0ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNh
Y2hlZENvZGVCbG9jazo6bnVtVmFsdWVQcm9maWxlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkNh
Y2hlZENvZGVCbG9jazo6bnVtQXJyYXlQcm9maWxlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNhY2hl
ZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKwogMjAyMS0wOS0xNiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODI0NzguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKK2NsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KQEAgLTE5NSw2ICsxOTYsNyBAQCBpbmxpbmUgYm9vbCBo
YXNTZWVuQ29weU9uV3JpdGVBcnJheShBcnJhCiAKIGNsYXNzIEFycmF5UHJvZmlsZSB7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICBmcmllbmQgY2xhc3MgVW5saW5rZWRBcnJheVBy
b2ZpbGU7CiAKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBcnJheVByb2ZpbGUoKQpAQCAtMjQ5LDQg
KzI1MSw0NiBAQCBwcml2YXRlOgogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmls
ZSkgPT0gMTIpOwogCitjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CitwdWJsaWM6CisgICAg
VW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHVwZGF0ZShBcnJh
eVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKKyAgICB7CisgICAgICAgIEFycmF5TW9kZXMgbmV3TW9k
ZXMgPSBhcnJheVByb2ZpbGUubV9vYnNlcnZlZEFycmF5TW9kZXMgfCBtX29ic2VydmVkQXJyYXlN
b2RlczsKKyAgICAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgPSBuZXdNb2RlczsKKyAgICAgICAg
YXJyYXlQcm9maWxlLm1fb2JzZXJ2ZWRBcnJheU1vZGVzID0gbmV3TW9kZXM7CisKKyAgICAgICAg
aWYgKG1fbWF5U3RvcmVUb0hvbGUpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlTdG9y
ZVRvSG9sZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5U3RvcmVUb0hv
bGUgPSBhcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZTsKKworICAgICAgICBpZiAobV9vdXRP
ZkJvdW5kcykKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX291dE9mQm91bmRzID0gdHJ1ZTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vdXRPZkJvdW5kcyA9IGFycmF5UHJvZmlsZS5t
X291dE9mQm91bmRzOworCisgICAgICAgIGlmIChtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cykKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cyA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzID0gYXJyYXlQcm9maWxlLm1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOwor
CisgICAgICAgIGlmICghbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMpCisgICAgICAgICAg
ICBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBh
cnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7CisgICAgfQorCitwcml2
YXRlOgorICAgIEFycmF5TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9kZXMgeyAwIH07CisgICAgLy8g
V2Uga2VlcCB0aGVzZSBhcyBmdWxsIGJ5dGUtc2l6ZWQgYm9vbGVhbnMganVzdCBmb3Igc3BlZWQs
IGJlY2F1c2UgdGhlCisgICAgLy8gYWxpZ25tZW50IG9mIHRoaXMgc3RydWN0IHdpbGwgYWxyZWFk
eSBtYWtlIHVzIDggYnl0ZXMgbGFyZ2UuIEJ1dCBpZiB3ZQorICAgIC8vIGV2ZXIgbmVlZCB0byBh
ZGQgbW9yZSBzdHVmZiwgdGhlc2UgZmllbGRzIGNhbiBiZWNvbWUgYml0ZmllbGRzLgorICAgIGJv
b2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX291dE9mQm91bmRzIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIHsgdHJ1ZSB9OworfTsK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OTMsNiAr
Mjg5Myw3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICBu
dW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2Ft
cGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpu
dW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUg
cHJvZmlsZXMgYXJlIGZ1bGwuCiAKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgZm9yRWFj
aFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJndW1lbnQp
IHsKICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUudG90YWxOdW1iZXJPZlNh
bXBsZXMoKTsKICAgICAgICAgc3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVj
a2V0cyA9PSAxKTsKQEAgLTI5MDEsMTEgKzI5MDIsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0
ZUFsbFZhbHVlUHJvZmlsZVByZQogICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9
IG51bVNhbXBsZXM7CiAgICAgICAgIGlmIChpc0FyZ3VtZW50KSB7CiAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgdW5saW5r
ZWRDb2RlQmxvY2soKS0+dW5saW5rZWRWYWx1ZVByb2ZpbGUoaW5kZXgrKykudXBkYXRlKHByb2Zp
bGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm9maWxl
Lm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUuaXNTYW1wbGVkQmVmb3JlKCkpCiAgICAgICAg
ICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgdW5saW5rZWRD
b2RlQmxvY2soKS0+dW5saW5rZWRWYWx1ZVByb2ZpbGUoaW5kZXgrKykudXBkYXRlKHByb2ZpbGUp
OwogICAgIH0pOwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKQEAgLTI5MjksMTMgKzI5MzIsNDkg
QEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZQogICAgIHVwZGF0ZUFs
bFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyhpZ25vcmVkVmFsdWUxLCBp
Z25vcmVkVmFsdWUyKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGlj
dGlvbnMoKQordm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJvZmlsZVByZWRpY3Rpb25z
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQogewotICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAKLSAgICBmb3JFYWNoQXJyYXlQcm9maWxlKFsmXShB
cnJheVByb2ZpbGUmIHByb2ZpbGUpIHsKKyAgICBpZiAoIW1fbWV0YWRhdGEpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKworICAgIGF1dG8gcHJvY2VzcyA9IFsm
XSAoQXJyYXlQcm9maWxlJiBwcm9maWxlKSB7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlciwgdGhpcyk7CisgICAgICAgIHVubGlua2VkQ29kZUJsb2NrKCkt
PnVubGlua2VkQXJyYXlQcm9maWxlKGluZGV4KyspLnVwZGF0ZShwcm9maWxlKTsKKyAgICB9Owor
CisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1v
ZGU6OkFycmF5TGVuZ3RoKQorICAgICAgICAgICAgcHJvY2VzcyhtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBXZSByZXNlcnZlIGFuIGluZGV4IHBlciBHZXRCeUlkIHdoZXRoZXIgb3Igbm90
IGl0J3MgY3VycmVudGx5IGluIEFycmF5TGVuZ3RoIG1vZGUuCisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICB9CiAgICAgfSk7CisKKyNkZWZpbmUgVklTSVQxKF9fb3ApIFwKKyAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgcHJvY2VzcyhtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworCisjZGVmaW5lIFZJU0lUMihfX29wKSBcCisgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IHByb2Nlc3Mo
bWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKKworICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklTSVQxKQorICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX0xMSU5UX0NBTExfTElOS19JTkZPKFZJU0lUMikKKworI3VuZGVmIFZJU0lUMQorI3Vu
ZGVmIFZJU0lUMgorCisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZd
IChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICBwcm9jZXNzKG1ldGFkYXRhLm1faXRlcmFibGVQ
cm9maWxlKTsKKyAgICB9KTsKK30KKwordm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJl
ZGljdGlvbnMoKQoreworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKwor
ICAgIHVwZGF0ZUFsbEFycmF5UHJvZmlsZVByZWRpY3Rpb25zKGxvY2tlcik7CiAgICAgCiAgICAg
Zm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUoWyZdKEFycmF5QWxsb2NhdGlvblByb2ZpbGUm
IHByb2ZpbGUpIHsKICAgICAgICAgcHJvZmlsZS51cGRhdGVQcm9maWxlKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyODI1NjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4OSw3ICs0ODksNiBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRlZFR5cGUgdmFs
dWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgQnl0ZWNvZGVJbmRleCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdm9pZCBmb3JFYWNoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExMSW50Q2FsbExpbmtJ
bmZvKGNvbnN0IEZ1bmN0b3ImKTsKQEAgLTc4Nyw2ICs3ODYsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHNob3VsZE9wdGltaXplTm93KCk7CiAgICAgdm9pZCB1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQ
cmVkaWN0aW9ucygpOworICAgIHZvaWQgdXBkYXRlQWxsQXJyYXlQcm9maWxlUHJlZGljdGlvbnMo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJik7CiAgICAgdm9pZCB1cGRhdGVBbGxBcnJheVByZWRp
Y3Rpb25zKCk7CiAgICAgdm9pZCB1cGRhdGVBbGxQcmVkaWN0aW9ucygpOwogCkBAIC04ODYsNyAr
ODg2LDggQEAgcHVibGljOgogICAgIE1ldGFkYXRhJiBtZXRhZGF0YShPcGNvZGVJRCBvcGNvZGVJ
RCwgdW5zaWduZWQgbWV0YWRhdGFJRCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX21ldGFkYXRh
KTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNZXRhZGF0YSo+KG1fbWV0YWRhdGEtPmdl
dChvcGNvZGVJRCkpW21ldGFkYXRhSURdOworICAgICAgICBBU1NFUlRfVU5VU0VEKG9wY29kZUlE
LCBvcGNvZGVJRCA9PSBNZXRhZGF0YTo6b3Bjb2RlSUQpOworICAgICAgICByZXR1cm4gbV9tZXRh
ZGF0YS0+Z2V0PE1ldGFkYXRhPigpW21ldGFkYXRhSURdOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE1ldGFkYXRhPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSwzMyArNjEsNiBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmlsZShj
b25zCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIENvZGVCbG9jazo6Zm9y
RWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQotewotICAgIGlmIChtX21ldGFk
YXRhKSB7Ci0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9k
ZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAgICAgICAgICAgICAgZnVuYyhtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKLSAgICAg
ICAgfSk7Ci0KLSNkZWZpbmUgVklTSVQxKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZSk7IH0pOwotCi0jZGVmaW5lIFZJU0lUMihfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0lu
Zm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKLQotICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUMSkKLSAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfTExJTlRf
Q0FMTF9MSU5LX0lORk8oVklTSVQyKQotCi0jdW5kZWYgVklTSVQxCi0jdW5kZWYgVklTSVQyCi0K
LSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgewotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSk7
Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZv
aWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlBbGxvY2F0aW9uUHJvZmlsZShjb25zdCBGdW5jdG9y
JiBmdW5jKQogewogICAgIGlmIChtX21ldGFkYXRhKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCShyZXZpc2lvbiAyODI1NjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDExIEBAIHN0cnVjdCBEZWFsbG9jVGFibGUgewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgIHN0YXRpYyB2b2lkIHdpdGhPcGNvZGVUeXBlKE1l
dGFkYXRhVGFibGUqIHRhYmxlKQogICAgIHsKLSAgICAgICAgdGFibGUtPmZvckVhY2g8T3A+KFtd
KGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgICAgICBlbnRyeS5+TWV0YWRhdGEoKTsKLSAgICAgICAg
fSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE9wOjpvcGNv
ZGVJRCkgPCBOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSkgeworICAgICAgICAgICAg
dGFibGUtPmZvckVhY2g8T3A+KFtdKGF1dG8mIGVudHJ5KSB7CisgICAgICAgICAgICAgICAgZW50
cnkufk1ldGFkYXRhKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUu
aAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGFkYXRhVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTggKzQ2LDIyIEBAIGNsYXNzIE1l
dGFkYXRhVGFibGUgewogcHVibGljOgogICAgIH5NZXRhZGF0YVRhYmxlKCk7CiAKLSAgICBBTFdB
WVNfSU5MSU5FIEluc3RydWN0aW9uOjpNZXRhZGF0YSogZ2V0KE9wY29kZUlEIG9wY29kZUlEKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorICAgIEFMV0FZU19JTkxJTkUgTWV0YWRh
dGEqIGdldCgpCiAgICAgeworICAgICAgICBhdXRvIG9wY29kZUlEID0gTWV0YWRhdGE6Om9wY29k
ZUlEOwogICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPCBOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9N
RVRBREFUQSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uOjpN
ZXRhZGF0YSo+KGdldEltcGwob3Bjb2RlSUQpKTsKKyAgICAgICAgdWludHB0cl90IHB0ciA9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGdldFdpdGhvdXRBbGlnbmluZyhvcGNvZGVJRCkpOworICAg
ICAgICBwdHIgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YoTWV0YWRhdGEpLCBwdHIpOwor
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE1ldGFkYXRhKj4ocHRyKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgRnVuY3Rvcj4KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZm9yRWFjaChjb25zdCBGdW5jdG9yJiBmdW5jKQogICAgIHsKLSAgICAgICAgYXV0
byogbWV0YWRhdGEgPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhKj4oZ2V0KE9w
OjpvcGNvZGVJRCkpOwotICAgICAgICBhdXRvKiBlbmQgPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUg
T3A6Ok1ldGFkYXRhKj4oZ2V0SW1wbChPcDo6b3Bjb2RlSUQgKyAxKSk7Ci0gICAgICAgIGZvciAo
OyBtZXRhZGF0YSArIDEgPD0gZW5kOyArK21ldGFkYXRhKQorICAgICAgICBhdXRvKiBtZXRhZGF0
YSA9IGdldDx0eXBlbmFtZSBPcDo6TWV0YWRhdGE+KCk7CisgICAgICAgIGF1dG8qIGVuZCA9IGJp
dHdpc2VfY2FzdDx0eXBlbmFtZSBPcDo6TWV0YWRhdGEqPihnZXRXaXRob3V0QWxpZ25pbmcoT3A6
Om9wY29kZUlEICsgMSkpOworICAgICAgICBmb3IgKDsgbWV0YWRhdGEgPCBlbmQ7ICsrbWV0YWRh
dGEpCiAgICAgICAgICAgICBmdW5jKCptZXRhZGF0YSk7CiAgICAgfQogCkBAIC0xMTYsNyArMTIw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG9mZnNldFRhYmxlMzIoKVtpXTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldEltcGwodW5zaWduZWQgaSkKKyAgICBB
TFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldFdpdGhvdXRBbGlnbmluZyh1bnNpZ25lZCBpKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odGhpcykgKyBnZXRPZmZz
ZXQoaSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTYsNCArMzE2LDM3IEBAIGludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5l
SnVtcE9mZnMKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVP
ZmZzZXQpOwogfQogCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphbGxvY2F0ZVNoYXJlZFByb2Zp
bGVzKCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9tZXRhZGF0YS0+aXNGaW5hbGl6ZWQoKSk7
CisKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFsdWVQcm9maWxlcyA9IG51bVBh
cmFtZXRlcnMoKTsKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKKyNk
ZWZpbmUgQ09VTlQoX19vcCkgXAorICAgICAgICAgICAgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzICs9
IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8X19vcD4oKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09Q
Q09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoQ09VTlQpCisjdW5kZWYgQ09VTlQKKyAgICAgICAgICAg
IG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0
b3JPcGVuPigpICogMzsKKyAgICAgICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21l
dGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JOZXh0PigpICogMzsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFVubGlua2VkVmFsdWVQcm9maWxl
PihudW1iZXJPZlZhbHVlUHJvZmlsZXMpOworICAgIH0KKworICAgIGlmIChtX21ldGFkYXRhLT5o
YXNNZXRhZGF0YSgpKSB7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJyYXlQcm9maWxlcyA9
IDA7CisKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAorICAgICAgICBudW1iZXJPZkFycmF5UHJvZmls
ZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOworICAgICAgICBGT1JfRUFDSF9P
UENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENPVU5UKQorICAgICAgICBGT1JfRUFDSF9PUENPREVf
V0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAgICBu
dW1iZXJPZkFycmF5UHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
TmV4dD4oKTsKKyAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51
bUVudHJpZXM8T3BHZXRCeUlkPigpOworCisgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9IEZpeGVk
VmVjdG9yPFVubGlua2VkQXJyYXlQcm9maWxlPihudW1iZXJPZkFycmF5UHJvZmlsZXMpOworICAg
IH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMjgyNTY1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5j
bHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgpAQCAtMzgsNiAr
MzksNyBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgiCisjaW5jbHVk
ZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KQEAgLTY4LDggKzcwLDYg
QEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKIHRlbXBsYXRlPHR5cGVu
YW1lIENvZGVCbG9ja1R5cGU+CiBjbGFzcyBDYWNoZWRDb2RlQmxvY2s7CiAKLXR5cGVkZWYgdW5z
aWduZWQgVW5saW5rZWRWYWx1ZVByb2ZpbGU7Ci10eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkQXJy
YXlQcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2Zp
bGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0
eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CkBAIC0zMzQsNiArMzM0
LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKTsK
ICAgICB9CiAKKyAgICB2b2lkIGFsbG9jYXRlU2hhcmVkUHJvZmlsZXMoKTsKKyAgICBVbmxpbmtl
ZFZhbHVlUHJvZmlsZSYgdW5saW5rZWRWYWx1ZVByb2ZpbGUodW5zaWduZWQgaW5kZXgpIHsgcmV0
dXJuIG1fdmFsdWVQcm9maWxlc1tpbmRleF07IH0KKyAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSYg
dW5saW5rZWRBcnJheVByb2ZpbGUodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIG1fYXJyYXlQcm9m
aWxlc1tpbmRleF07IH0KIAogcHJvdGVjdGVkOgogICAgIFVubGlua2VkQ29kZUJsb2NrKFZNJiwg
U3RydWN0dXJlKiwgQ29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4pOwpAQCAtNDYyLDYgKzQ2NSw4IEBAIHByaXZhdGU6CiAgICAgT3V0
T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAgICAgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJh
bmdlSW5mbz4gbV9leHByZXNzaW9uSW5mbzsKKyAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFZhbHVl
UHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIEZpeGVkVmVjdG9yPFVubGlua2VkQXJyYXlQ
cm9maWxlPiBtX2FycmF5UHJvZmlsZXM7CiAKIHByb3RlY3RlZDoKICAgICBERUNMQVJFX1ZJU0lU
X0NISUxEUkVOOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODI1
NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDcgQEAgdm9pZCBVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpegogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY29kZUJsb2NrLT5jZWxsTG9jaygpIH07CiAgICAgICAgIG1fY29kZUJsb2NrLT5t
X2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2stPmFsbG9jYXRlU2hhcmVkUHJvZmlsZXMoKTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1fbWV0
YWRhdGEtPmZpbmFsaXplKCk7CiAKICAgICAgICAgbV9jb2RlQmxvY2stPm1fanVtcFRhcmdldHMg
PSBXVEZNb3ZlKG1fanVtcFRhcmdldHMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAJKHJldmlzaW9u
IDI4MjU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFk
YXRhVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMCArNTUsMTAgQEAgdm9pZCBVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKCkKICAgICAgICAgICAgICAgICBidWZmZXJbaV0g
PSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7IC8vIFdlIGFsaWduIHdoZW4gd2UgYWNjZXNzIHRo
aXMuCiAgICAgICAgICAgICB1bnNpZ25lZCBhbGlnbm1lbnQgPSBtZXRhZGF0YUFsaWdubWVudChz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgICAgICAgICAgb2Zmc2V0ID0gcm91bmRVcFRv
TXVsdGlwbGVPZihhbGlnbm1lbnQsIG9mZnNldCk7CiAgICAgICAgICAgICBBU1NFUlQoYWxpZ25t
ZW50IDw9IHNfbWF4TWV0YWRhdGFBbGlnbm1lbnQpOwotICAgICAgICAgICAgYnVmZmVyW2ldID0g
b2Zmc2V0OwogICAgICAgICAgICAgb2Zmc2V0ICs9IG51bWJlck9mRW50cmllcyAqIG1ldGFkYXRh
U2l6ZShzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZl
cltzX29mZnNldFRhYmxlRW50cmllcyAtIDFdID0gb2Zmc2V0OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaAko
cmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkTWV0YWRhdGFUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVubGlua2VkTWV0YWRhdGFUYWJsZSk7
CiAgICAgfQogCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ5dGVjb2RlPgorICAgIHVuc2lnbmVk
IG51bUVudHJpZXMoKTsKKworICAgIGJvb2wgaXNGaW5hbGl6ZWQoKSB7IHJldHVybiBtX2lzRmlu
YWxpemVkOyB9CisgICAgYm9vbCBoYXNNZXRhZGF0YSgpIHsgcmV0dXJuIG1faGFzTWV0YWRhdGE7
IH0KKwogcHJpdmF0ZToKICAgICBlbnVtIEVtcHR5VGFnIHsgRW1wdHkgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
ZXRhZGF0YVRhYmxlSW5saW5lcy5oCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Myw2ICs3MywxNCBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFVubGlua2Vk
TWV0YWRhdGFUCiAgICAgcmV0dXJuIHByZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF0rKzsKIH0K
IAordGVtcGxhdGUgPHR5cGVuYW1lIEJ5dGVjb2RlPgorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBV
bmxpbmtlZE1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMoKQoreworICAgIGNvbnN0ZXhwciBhdXRv
IG9wY29kZUlEID0gQnl0ZWNvZGU6Om9wY29kZUlEOworICAgIEFTU0VSVCghbV9pc0ZpbmFsaXpl
ZCAmJiBvcGNvZGVJRCA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMSk7CisgICAgcmV0dXJuIHBy
ZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF07Cit9CisKIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVu
bGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoKQogewogICAgIGlmIChtX2lzRmluYWxp
emVkICYmICFtX2hhc01ldGFkYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4
ICszNiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRWYWx1ZVByb2Zp
bGU7CisKIHRlbXBsYXRlPHVuc2lnbmVkIG51bWJlck9mQnVja2V0c0FyZ3VtZW50Pgogc3RydWN0
IFZhbHVlUHJvZmlsZUJhc2UgeworICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtlZFZhbHVlUHJvZmls
ZTsKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzID0gbnVt
YmVyT2ZCdWNrZXRzQXJndW1lbnQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1i
ZXJPZlNwZWNGYWlsQnVja2V0cyA9IDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBi
dWNrZXRJbmRleE1hc2sgPSBudW1iZXJPZkJ1Y2tldHMgLSAxOwpAQCAtMjEzLDQgKzIxNywxOSBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKK2NsYXNzIFVubGlua2VkVmFs
dWVQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSgpID0gZGVmYXVs
dDsKKworICAgIHZvaWQgdXBkYXRlKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSkKKyAgICB7CisgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIG5ld1R5cGUgPSBwcm9maWxlLm1fcHJlZGljdGlvbiB8IG1fcHJl
ZGljdGlvbjsKKyAgICAgICAgcHJvZmlsZS5tX3ByZWRpY3Rpb24gPSBuZXdUeXBlOworICAgICAg
ICBtX3ByZWRpY3Rpb24gPSBuZXdUeXBlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVjdWxh
dGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNjksNyArMTA2OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHBvcExl
eGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSopOwogICAgICAgICB2b2lkIHByZXBh
cmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbihWYXJpYWJsZUVudmlyb25tZW50
Tm9kZSosIFJlZ2lzdGVySUQqIGxvb3BTeW1ib2xUYWJsZSk7CiAgICAgICAgIGludCBsYWJlbFNj
b3BlRGVwdGgoKSBjb25zdDsKLSAgICAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgbmV3QXJyYXlQ
cm9maWxlKCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00MTMsNiAr
NDEzLDExIEBAIG1hY3JvIG1ldGFkYXRhKHNpemUsIG9wY29kZSwgZHN0LCBzY3JhdGMKICAgICBt
dWxpIHNpemVvZiAlb3Bjb2RlJTo6TWV0YWRhdGEsIHNjcmF0Y2ggIyBzY3JhdGNoICo9IHNpemVv
ZihPcDo6TWV0YWRhdGEpCiAgICAgYWRkaSBzY3JhdGNoLCBkc3QgIyBvZmZzZXQgKz0gc2NyYXRj
aAogICAgIGFkZHAgbWV0YWRhdGFUYWJsZSwgZHN0ICMgcmV0dXJuICZtZXRhZGF0YVRhYmxlW29m
ZnNldF0KKyAgICAjIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZihNZXRhZGF0YSksIGRzdCkK
KyAgICBjb25zdCBhZGRlciA9IChjb25zdGV4cHIgKGFsaWdub2YoJW9wY29kZSU6Ok1ldGFkYXRh
KSkpIC0gMQorICAgIGNvbnN0IG1hc2sgPSB+YWRkZXIKKyAgICBhZGRwIGFkZGVyLCBkc3QKKyAg
ICBhbmRwIG1hc2ssIGRzdAogZW5kCiAKIG1hY3JvIGp1bXBJbXBsKGRpc3BhdGNoSW5kaXJlY3Qs
IHRhcmdldE9mZnNldFJlZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAJKHJldmlzaW9uIDI4MjU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxNiw2ICsx
OTE2LDkgQEAgcHVibGljOgogCiAgICAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhKiByYXJl
RGF0YShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhLmRlY29kZShk
ZWNvZGVyKTsgfQogCisgICAgdW5zaWduZWQgbnVtVmFsdWVQcm9maWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtVmFsdWVQcm9maWxlczsgfQorICAgIHVuc2lnbmVkIG51bUFycmF5UHJvZmlsZXMo
KSBjb25zdCB7IHJldHVybiBtX251bUFycmF5UHJvZmlsZXM7IH0KKwogcHJpdmF0ZToKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2Nv
cGVSZWdpc3RlcjsKQEAgLTE5NDcsNiArMTk1MCw5IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVt
Q2FsbGVlTG9jYWxzOwogICAgIGludCBtX251bVBhcmFtZXRlcnM7CiAKKyAgICB1bnNpZ25lZCBt
X251bVZhbHVlUHJvZmlsZXM7CisgICAgdW5zaWduZWQgbV9udW1BcnJheVByb2ZpbGVzOworCiAg
ICAgQ2FjaGVkTWV0YWRhdGFUYWJsZSBtX21ldGFkYXRhOwogCiAgICAgQ2FjaGVkUHRyPENhY2hl
ZENvZGVCbG9ja1JhcmVEYXRhPiBtX3JhcmVEYXRhOwpAQCAtMjE1MSw4ICsyMTU3LDkgQEAgQUxX
QVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZQogCiAgICAgLCBtX21ldGFkYXRh
KGNhY2hlZENvZGVCbG9jay5tZXRhZGF0YShkZWNvZGVyKSkKICAgICAsIG1faW5zdHJ1Y3Rpb25z
KGNhY2hlZENvZGVCbG9jay5pbnN0cnVjdGlvbnMoZGVjb2RlcikpCi0KICAgICAsIG1fcmFyZURh
dGEoY2FjaGVkQ29kZUJsb2NrLnJhcmVEYXRhKGRlY29kZXIpKQorICAgICwgbV92YWx1ZVByb2Zp
bGVzKGNhY2hlZENvZGVCbG9jay5udW1WYWx1ZVByb2ZpbGVzKCkpCisgICAgLCBtX2FycmF5UHJv
ZmlsZXMoY2FjaGVkQ29kZUJsb2NrLm51bUFycmF5UHJvZmlsZXMoKSkKIHsKIH0KIApAQCAtMjMy
OCw2ICsyMzM1LDggQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9jazxDb2RlQgog
ICAgIG1fY29kZUdlbmVyYXRpb25Nb2RlID0gY29kZUJsb2NrLm1fY29kZUdlbmVyYXRpb25Nb2Rl
OwogICAgIG1fY29kZVR5cGUgPSBjb2RlQmxvY2subV9jb2RlVHlwZTsKICAgICBtX2hhc0NoZWNr
cG9pbnRzID0gY29kZUJsb2NrLm1faGFzQ2hlY2twb2ludHM7CisgICAgbV9udW1WYWx1ZVByb2Zp
bGVzID0gY29kZUJsb2NrLm1fdmFsdWVQcm9maWxlcy5zaXplKCk7CisgICAgbV9udW1BcnJheVBy
b2ZpbGVzID0gY29kZUJsb2NrLm1fYXJyYXlQcm9maWxlcy5zaXplKCk7CiAKICAgICBtX21ldGFk
YXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9tZXRhZGF0YS5nZXQoKSk7CiAgICAgbV9y
YXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fcmFyZURhdGEuZ2V0KCkpOwo=
</data>
<flag name="commit-queue"
          id="461762"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438403</attachid>
            <date>2021-09-16 14:32:58 -0700</date>
            <delta_ts>2021-09-16 17:11:32 -0700</delta_ts>
            <desc>[fast-cq] patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>24744</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgyNTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDIxLTA5LTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgc29tZSBwcm9maWxpbmcgdG8gVW5saW5rZWRDb2RlQmxvY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA3OAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODI5NDc1NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgVW5saW5rZWRWYWx1ZVByb2ZpbGUgYW5kIFVubGlu
a2VkQXJyYXlQcm9maWxlIHRvCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrLiBUaGVzZSBwcm9m
aWxlcyBzZXJpYWxpemUgdGhlIGRhdGEgaW4gVmFsdWVQcm9maWxlCisgICAgICAgIGFuZCBBcnJh
eVByb2ZpbGUuIEVhY2ggdGltZSBhIENvZGVCbG9jayB1cGRhdGVzIHZhbHVlIHByb2ZpbGVzLAor
ICAgICAgICBpdCBtaXhlcyBpbiB1cCB0byBkYXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIHVubGlu
a2VkIHByb2ZpbGVzLCBhbmQKKyAgICAgICAgYWxzbyB3cml0ZXMgYmFjayBkYXRhIHRvIHRoZSB1
bmxpbmtlZCBwcm9maWxlcywgc28gdGhlIGRhdGEgaXMgc2hhcmVkCisgICAgICAgIGJldHdlZW4g
Q29kZUJsb2NrcyBvZiB0aGUgc2FtZSBVbmxpbmtlZENvZGVCbG9jay4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIHByZS1leGlzdGluZyBidWcgd2hlcmUgd2Ugd291
bGQgc29tZXRpbWVzIHRoaW5rCisgICAgICAgIHdlIGhhZCBtb3JlIG1ldGFkYXRhIHRhYmxlIGVu
dHJpZXMgdGhhbiB3ZSByZWFsbHkgaGFkIGluIHByYWN0aWNlLiBUaGlzIGlzCisgICAgICAgIGJl
Y2F1c2UgTWV0YWRhdGFUYWJsZTo6Zm9yRWFjaCB1c2VkIHRoZSBuZXh0IG9wY29kZSdzIHN0YXJ0
IHBvaW50ZXIuIFRoYXQKKyAgICAgICAgcG9pbnRlciB3YXMgYWxpZ25lZCB0byB0aGF0IG9wY29k
ZSdzIG1ldGFkYXRhIGFsaWdubWVudC4gU28gdGhhdCBtaWdodCBtYWtlCisgICAgICAgIHRoZSBw
cmV2aW91cyBvcGNvZGUgdGhpbmsgaXQgaGFkIGFuIGV4dHJhIDEtNyBlbnRyaWVzIChkZXBlbmRp
bmcgb24gc2l6ZSwKKyAgICAgICAgYWxpZ25tZW50LCBldGMpLiBUaGlzIHBhdGNoIGZpeGVzIHRo
YXQgYnkgaGF2aW5nIHRoZSBuZXh0IG9wY29kZSdzIHN0YXJ0CisgICAgICAgIG9mZnNldCBpbiB0
aGUgdGFibGUgYWx3YXlzIGJlIHRoZSBlbmQgb2Zmc2V0IG9mIHRoZSBwcmV2aW91cyBvcGNvZGUs
IGFuZCB3ZQorICAgICAgICBhbGlnbiB0aGUgc3RhcnQgcG9pbnRlciB3aGVuIHVzaW5nIGl0Lgor
ICAgICAgICAKKyAgICAgICAgVGhpcyB3YXMgbWVhc3VyZWQgYXMgYSB+MC41JSBzcGVlZHVwIG9u
IFNwZWVkb21ldGVyMi4KKworICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEFycmF5UHJvZmlsZTo6dXBkYXRlKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmVk
aWN0aW9uc0FuZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0
ZUFsbEFycmF5UHJvZmlsZVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1
cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjptZXRhZGF0YSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hB
cnJheVByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpEZWFsbG9jVGFibGU6OndpdGhPcGNvZGVUeXBlKToKKyAgICAg
ICAgKiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFi
bGU6OmdldCk6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OmZvckVhY2gpOgorICAgICAg
ICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpnZXRXaXRob3V0QWxpZ25pbmcpOgorICAgICAgICAoSlND
OjpNZXRhZGF0YVRhYmxlOjpnZXRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjph
bGxvY2F0ZVNoYXJlZFByb2ZpbGVzKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dW5saW5rZWRWYWx1ZVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dW5saW5rZWRBcnJheVBy
b2ZpbGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OmZpbmFsaXplKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0
YVRhYmxlOjppc0ZpbmFsaXplZCk6CisgICAgICAgIChKU0M6OlVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6aGFzTWV0YWRhdGEpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJs
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpudW1FbnRy
aWVzKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRWYWx1ZVByb2ZpbGU6OnVwZGF0ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNh
Y2hlZENvZGVCbG9jazo6bnVtVmFsdWVQcm9maWxlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkNh
Y2hlZENvZGVCbG9jazo6bnVtQXJyYXlQcm9maWxlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNhY2hl
ZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKwogMjAyMS0wOS0xNiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODI0NzguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKK2NsYXNzIFVubGlua2VkQXJyYXlQcm9maWxlOwogCiAvLyBUaGlzIGlz
IGEgYml0ZmllbGQgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhbiB0eXBlIG9mIGFycmF5IGFj
Y2VzcyB0aGF0IHdlIGhhdmUgc2Vlbi4KIC8vIFRoZXJlIGFyZSAxOSBpbmRleGluZyB0eXBlcyB0
aGF0IHVzZSB0aGUgbG93ZXIgYml0cy4KQEAgLTE5NSw2ICsxOTYsNyBAQCBpbmxpbmUgYm9vbCBo
YXNTZWVuQ29weU9uV3JpdGVBcnJheShBcnJhCiAKIGNsYXNzIEFycmF5UHJvZmlsZSB7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICBmcmllbmQgY2xhc3MgVW5saW5rZWRBcnJheVBy
b2ZpbGU7CiAKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBcnJheVByb2ZpbGUoKQpAQCAtMjQ5LDQg
KzI1MSw0NiBAQCBwcml2YXRlOgogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5UHJvZmls
ZSkgPT0gMTIpOwogCitjbGFzcyBVbmxpbmtlZEFycmF5UHJvZmlsZSB7CitwdWJsaWM6CisgICAg
VW5saW5rZWRBcnJheVByb2ZpbGUoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHVwZGF0ZShBcnJh
eVByb2ZpbGUmIGFycmF5UHJvZmlsZSkKKyAgICB7CisgICAgICAgIEFycmF5TW9kZXMgbmV3TW9k
ZXMgPSBhcnJheVByb2ZpbGUubV9vYnNlcnZlZEFycmF5TW9kZXMgfCBtX29ic2VydmVkQXJyYXlN
b2RlczsKKyAgICAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgPSBuZXdNb2RlczsKKyAgICAgICAg
YXJyYXlQcm9maWxlLm1fb2JzZXJ2ZWRBcnJheU1vZGVzID0gbmV3TW9kZXM7CisKKyAgICAgICAg
aWYgKG1fbWF5U3RvcmVUb0hvbGUpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUubV9tYXlTdG9y
ZVRvSG9sZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5U3RvcmVUb0hv
bGUgPSBhcnJheVByb2ZpbGUubV9tYXlTdG9yZVRvSG9sZTsKKworICAgICAgICBpZiAobV9vdXRP
ZkJvdW5kcykKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX291dE9mQm91bmRzID0gdHJ1ZTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vdXRPZkJvdW5kcyA9IGFycmF5UHJvZmlsZS5t
X291dE9mQm91bmRzOworCisgICAgICAgIGlmIChtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cykKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS5tX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cyA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzID0gYXJyYXlQcm9maWxlLm1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOwor
CisgICAgICAgIGlmICghbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMpCisgICAgICAgICAg
ICBhcnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBh
cnJheVByb2ZpbGUubV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7CisgICAgfQorCitwcml2
YXRlOgorICAgIEFycmF5TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9kZXMgeyAwIH07CisgICAgLy8g
V2Uga2VlcCB0aGVzZSBhcyBmdWxsIGJ5dGUtc2l6ZWQgYm9vbGVhbnMganVzdCBmb3Igc3BlZWQs
IGJlY2F1c2UgdGhlCisgICAgLy8gYWxpZ25tZW50IG9mIHRoaXMgc3RydWN0IHdpbGwgYWxyZWFk
eSBtYWtlIHVzIDggYnl0ZXMgbGFyZ2UuIEJ1dCBpZiB3ZQorICAgIC8vIGV2ZXIgbmVlZCB0byBh
ZGQgbW9yZSBzdHVmZiwgdGhlc2UgZmllbGRzIGNhbiBiZWNvbWUgYml0ZmllbGRzLgorICAgIGJv
b2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX291dE9mQm91bmRzIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIHsgdHJ1ZSB9OworfTsK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OTMsNiAr
Mjg5Myw3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQcmUKICAgICBu
dW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2Ft
cGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpu
dW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUg
cHJvZmlsZXMgYXJlIGZ1bGwuCiAKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgZm9yRWFj
aFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJndW1lbnQp
IHsKICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUudG90YWxOdW1iZXJPZlNh
bXBsZXMoKTsKICAgICAgICAgc3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVj
a2V0cyA9PSAxKTsKQEAgLTI5MDEsMTEgKzI5MDIsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0
ZUFsbFZhbHVlUHJvZmlsZVByZQogICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9
IG51bVNhbXBsZXM7CiAgICAgICAgIGlmIChpc0FyZ3VtZW50KSB7CiAgICAgICAgICAgICBwcm9m
aWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgdW5saW5r
ZWRDb2RlQmxvY2soKS0+dW5saW5rZWRWYWx1ZVByb2ZpbGUoaW5kZXgrKykudXBkYXRlKHByb2Zp
bGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm9maWxl
Lm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUuaXNTYW1wbGVkQmVmb3JlKCkpCiAgICAgICAg
ICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgdW5saW5rZWRD
b2RlQmxvY2soKS0+dW5saW5rZWRWYWx1ZVByb2ZpbGUoaW5kZXgrKykudXBkYXRlKHByb2ZpbGUp
OwogICAgIH0pOwogCiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKQEAgLTI5MjksMTMgKzI5MzIsNDkg
QEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZQogICAgIHVwZGF0ZUFs
bFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyhpZ25vcmVkVmFsdWUxLCBp
Z25vcmVkVmFsdWUyKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJlZGlj
dGlvbnMoKQordm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJvZmlsZVByZWRpY3Rpb25z
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyKQogewotICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAKLSAgICBmb3JFYWNoQXJyYXlQcm9maWxlKFsmXShB
cnJheVByb2ZpbGUmIHByb2ZpbGUpIHsKKyAgICBpZiAoIW1fbWV0YWRhdGEpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKworICAgIGF1dG8gcHJvY2VzcyA9IFsm
XSAoQXJyYXlQcm9maWxlJiBwcm9maWxlKSB7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlciwgdGhpcyk7CisgICAgICAgIHVubGlua2VkQ29kZUJsb2NrKCkt
PnVubGlua2VkQXJyYXlQcm9maWxlKGluZGV4KyspLnVwZGF0ZShwcm9maWxlKTsKKyAgICB9Owor
CisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1v
ZGU6OkFycmF5TGVuZ3RoKQorICAgICAgICAgICAgcHJvY2VzcyhtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBXZSByZXNlcnZlIGFuIGluZGV4IHBlciBHZXRCeUlkIHdoZXRoZXIgb3Igbm90
IGl0J3MgY3VycmVudGx5IGluIEFycmF5TGVuZ3RoIG1vZGUuCisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICB9CiAgICAgfSk7CisKKyNkZWZpbmUgVklTSVQxKF9fb3ApIFwKKyAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgcHJvY2VzcyhtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOworCisjZGVmaW5lIFZJU0lUMihfX29wKSBcCisgICAg
bV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IHByb2Nlc3Mo
bWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKKworICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklTSVQxKQorICAgIEZPUl9FQUNIX09QQ09E
RV9XSVRIX0xMSU5UX0NBTExfTElOS19JTkZPKFZJU0lUMikKKworI3VuZGVmIFZJU0lUMQorI3Vu
ZGVmIFZJU0lUMgorCisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZd
IChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICBwcm9jZXNzKG1ldGFkYXRhLm1faXRlcmFibGVQ
cm9maWxlKTsKKyAgICB9KTsKK30KKwordm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbEFycmF5UHJl
ZGljdGlvbnMoKQoreworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKwor
ICAgIHVwZGF0ZUFsbEFycmF5UHJvZmlsZVByZWRpY3Rpb25zKGxvY2tlcik7CiAgICAgCiAgICAg
Zm9yRWFjaEFycmF5QWxsb2NhdGlvblByb2ZpbGUoWyZdKEFycmF5QWxsb2NhdGlvblByb2ZpbGUm
IHByb2ZpbGUpIHsKICAgICAgICAgcHJvZmlsZS51cGRhdGVQcm9maWxlKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyODI1NjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4OSw3ICs0ODksNiBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRlZFR5cGUgdmFs
dWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgQnl0ZWNvZGVJbmRleCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdm9pZCBmb3JFYWNoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExMSW50Q2FsbExpbmtJ
bmZvKGNvbnN0IEZ1bmN0b3ImKTsKQEAgLTc4Nyw2ICs3ODYsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHNob3VsZE9wdGltaXplTm93KCk7CiAgICAgdm9pZCB1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQ
cmVkaWN0aW9ucygpOworICAgIHZvaWQgdXBkYXRlQWxsQXJyYXlQcm9maWxlUHJlZGljdGlvbnMo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJik7CiAgICAgdm9pZCB1cGRhdGVBbGxBcnJheVByZWRp
Y3Rpb25zKCk7CiAgICAgdm9pZCB1cGRhdGVBbGxQcmVkaWN0aW9ucygpOwogCkBAIC04ODYsNyAr
ODg2LDggQEAgcHVibGljOgogICAgIE1ldGFkYXRhJiBtZXRhZGF0YShPcGNvZGVJRCBvcGNvZGVJ
RCwgdW5zaWduZWQgbWV0YWRhdGFJRCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX21ldGFkYXRh
KTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxNZXRhZGF0YSo+KG1fbWV0YWRhdGEtPmdl
dChvcGNvZGVJRCkpW21ldGFkYXRhSURdOworICAgICAgICBBU1NFUlRfVU5VU0VEKG9wY29kZUlE
LCBvcGNvZGVJRCA9PSBNZXRhZGF0YTo6b3Bjb2RlSUQpOworICAgICAgICByZXR1cm4gbV9tZXRh
ZGF0YS0+Z2V0PE1ldGFkYXRhPigpW21ldGFkYXRhSURdOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE1ldGFkYXRhPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSwzMyArNjEsNiBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmlsZShj
b25zCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIENvZGVCbG9jazo6Zm9y
RWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQotewotICAgIGlmIChtX21ldGFk
YXRhKSB7Ci0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9k
ZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCi0gICAgICAgICAgICAgICAgZnVuYyhtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKLSAgICAg
ICAgfSk7Ci0KLSNkZWZpbmUgVklTSVQxKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZSk7IH0pOwotCi0jZGVmaW5lIFZJU0lUMihfX29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0lu
Zm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKLQotICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9B
UlJBWV9QUk9GSUxFKFZJU0lUMSkKLSAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfTExJTlRf
Q0FMTF9MSU5LX0lORk8oVklTSVQyKQotCi0jdW5kZWYgVklTSVQxCi0jdW5kZWYgVklTSVQyCi0K
LSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEl0ZXJhdG9yTmV4dD4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgewotICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5tX2l0ZXJhYmxlUHJvZmlsZSk7
Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZv
aWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlBbGxvY2F0aW9uUHJvZmlsZShjb25zdCBGdW5jdG9y
JiBmdW5jKQogewogICAgIGlmIChtX21ldGFkYXRhKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCShyZXZpc2lvbiAyODI1NjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDExIEBAIHN0cnVjdCBEZWFsbG9jVGFibGUgewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgIHN0YXRpYyB2b2lkIHdpdGhPcGNvZGVUeXBlKE1l
dGFkYXRhVGFibGUqIHRhYmxlKQogICAgIHsKLSAgICAgICAgdGFibGUtPmZvckVhY2g8T3A+KFtd
KGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgICAgICBlbnRyeS5+TWV0YWRhdGEoKTsKLSAgICAgICAg
fSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE9wOjpvcGNv
ZGVJRCkgPCBOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSkgeworICAgICAgICAgICAg
dGFibGUtPmZvckVhY2g8T3A+KFtdKGF1dG8mIGVudHJ5KSB7CisgICAgICAgICAgICAgICAgZW50
cnkufk1ldGFkYXRhKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUu
aAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGFkYXRhVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTggKzQ2LDIyIEBAIGNsYXNzIE1l
dGFkYXRhVGFibGUgewogcHVibGljOgogICAgIH5NZXRhZGF0YVRhYmxlKCk7CiAKLSAgICBBTFdB
WVNfSU5MSU5FIEluc3RydWN0aW9uOjpNZXRhZGF0YSogZ2V0KE9wY29kZUlEIG9wY29kZUlEKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorICAgIEFMV0FZU19JTkxJTkUgTWV0YWRh
dGEqIGdldCgpCiAgICAgeworICAgICAgICBhdXRvIG9wY29kZUlEID0gTWV0YWRhdGE6Om9wY29k
ZUlEOwogICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPCBOVU1CRVJfT0ZfQllURUNPREVfV0lUSF9N
RVRBREFUQSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEluc3RydWN0aW9uOjpN
ZXRhZGF0YSo+KGdldEltcGwob3Bjb2RlSUQpKTsKKyAgICAgICAgdWludHB0cl90IHB0ciA9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGdldFdpdGhvdXRBbGlnbmluZyhvcGNvZGVJRCkpOworICAg
ICAgICBwdHIgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YoTWV0YWRhdGEpLCBwdHIpOwor
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE1ldGFkYXRhKj4ocHRyKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgRnVuY3Rvcj4KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZm9yRWFjaChjb25zdCBGdW5jdG9yJiBmdW5jKQogICAgIHsKLSAgICAgICAgYXV0
byogbWV0YWRhdGEgPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRhKj4oZ2V0KE9w
OjpvcGNvZGVJRCkpOwotICAgICAgICBhdXRvKiBlbmQgPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUg
T3A6Ok1ldGFkYXRhKj4oZ2V0SW1wbChPcDo6b3Bjb2RlSUQgKyAxKSk7Ci0gICAgICAgIGZvciAo
OyBtZXRhZGF0YSArIDEgPD0gZW5kOyArK21ldGFkYXRhKQorICAgICAgICBhdXRvKiBtZXRhZGF0
YSA9IGdldDx0eXBlbmFtZSBPcDo6TWV0YWRhdGE+KCk7CisgICAgICAgIGF1dG8qIGVuZCA9IGJp
dHdpc2VfY2FzdDx0eXBlbmFtZSBPcDo6TWV0YWRhdGEqPihnZXRXaXRob3V0QWxpZ25pbmcoT3A6
Om9wY29kZUlEICsgMSkpOworICAgICAgICBmb3IgKDsgbWV0YWRhdGEgPCBlbmQ7ICsrbWV0YWRh
dGEpCiAgICAgICAgICAgICBmdW5jKCptZXRhZGF0YSk7CiAgICAgfQogCkBAIC0xMTYsNyArMTIw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG9mZnNldFRhYmxlMzIoKVtpXTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldEltcGwodW5zaWduZWQgaSkKKyAgICBB
TFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldFdpdGhvdXRBbGlnbmluZyh1bnNpZ25lZCBpKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odGhpcykgKyBnZXRPZmZz
ZXQoaSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTYsNCArMzE2LDM3IEBAIGludCBVbmxpbmtlZENvZGVCbG9jazo6b3V0T2ZMaW5l
SnVtcE9mZnMKICAgICByZXR1cm4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVP
ZmZzZXQpOwogfQogCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphbGxvY2F0ZVNoYXJlZFByb2Zp
bGVzKCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9tZXRhZGF0YS0+aXNGaW5hbGl6ZWQoKSk7
CisKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFsdWVQcm9maWxlcyA9IG51bVBh
cmFtZXRlcnMoKTsKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEtPmhhc01ldGFkYXRhKCkpIHsKKyNk
ZWZpbmUgQ09VTlQoX19vcCkgXAorICAgICAgICAgICAgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzICs9
IG1fbWV0YWRhdGEtPm51bUVudHJpZXM8X19vcD4oKTsKKyAgICAgICAgICAgIEZPUl9FQUNIX09Q
Q09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoQ09VTlQpCisjdW5kZWYgQ09VTlQKKyAgICAgICAgICAg
IG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21ldGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0
b3JPcGVuPigpICogMzsKKyAgICAgICAgICAgIG51bWJlck9mVmFsdWVQcm9maWxlcyArPSBtX21l
dGFkYXRhLT5udW1FbnRyaWVzPE9wSXRlcmF0b3JOZXh0PigpICogMzsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fdmFsdWVQcm9maWxlcyA9IEZpeGVkVmVjdG9yPFVubGlua2VkVmFsdWVQcm9maWxl
PihudW1iZXJPZlZhbHVlUHJvZmlsZXMpOworICAgIH0KKworICAgIGlmIChtX21ldGFkYXRhLT5o
YXNNZXRhZGF0YSgpKSB7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJyYXlQcm9maWxlcyA9
IDA7CisKKyNkZWZpbmUgQ09VTlQoX19vcCkgXAorICAgICAgICBudW1iZXJPZkFycmF5UHJvZmls
ZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxfX29wPigpOworICAgICAgICBGT1JfRUFDSF9P
UENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENPVU5UKQorICAgICAgICBGT1JfRUFDSF9PUENPREVf
V0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhDT1VOVCkKKyN1bmRlZiBDT1VOVAorICAgICAgICBu
dW1iZXJPZkFycmF5UHJvZmlsZXMgKz0gbV9tZXRhZGF0YS0+bnVtRW50cmllczxPcEl0ZXJhdG9y
TmV4dD4oKTsKKyAgICAgICAgbnVtYmVyT2ZBcnJheVByb2ZpbGVzICs9IG1fbWV0YWRhdGEtPm51
bUVudHJpZXM8T3BHZXRCeUlkPigpOworCisgICAgICAgIG1fYXJyYXlQcm9maWxlcyA9IEZpeGVk
VmVjdG9yPFVubGlua2VkQXJyYXlQcm9maWxlPihudW1iZXJPZkFycmF5UHJvZmlsZXMpOworICAg
IH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMjgyNTY1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5j
bHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgpAQCAtMzgsNiAr
MzksNyBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRNZXRhZGF0YVRhYmxlLmgiCisjaW5jbHVk
ZSAiVmFsdWVQcm9maWxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KQEAgLTY4LDggKzcwLDYg
QEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKIHRlbXBsYXRlPHR5cGVu
YW1lIENvZGVCbG9ja1R5cGU+CiBjbGFzcyBDYWNoZWRDb2RlQmxvY2s7CiAKLXR5cGVkZWYgdW5z
aWduZWQgVW5saW5rZWRWYWx1ZVByb2ZpbGU7Ci10eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkQXJy
YXlQcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2Zp
bGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0
eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CkBAIC0zMzQsNiArMzM0
LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKTsK
ICAgICB9CiAKKyAgICB2b2lkIGFsbG9jYXRlU2hhcmVkUHJvZmlsZXMoKTsKKyAgICBVbmxpbmtl
ZFZhbHVlUHJvZmlsZSYgdW5saW5rZWRWYWx1ZVByb2ZpbGUodW5zaWduZWQgaW5kZXgpIHsgcmV0
dXJuIG1fdmFsdWVQcm9maWxlc1tpbmRleF07IH0KKyAgICBVbmxpbmtlZEFycmF5UHJvZmlsZSYg
dW5saW5rZWRBcnJheVByb2ZpbGUodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIG1fYXJyYXlQcm9m
aWxlc1tpbmRleF07IH0KIAogcHJvdGVjdGVkOgogICAgIFVubGlua2VkQ29kZUJsb2NrKFZNJiwg
U3RydWN0dXJlKiwgQ29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4pOwpAQCAtNDYyLDYgKzQ2NSw4IEBAIHByaXZhdGU6CiAgICAgT3V0
T2ZMaW5lSnVtcFRhcmdldHMgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAgICAgRml4ZWRWZWN0b3I8RXhwcmVzc2lvblJh
bmdlSW5mbz4gbV9leHByZXNzaW9uSW5mbzsKKyAgICBGaXhlZFZlY3RvcjxVbmxpbmtlZFZhbHVl
UHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIEZpeGVkVmVjdG9yPFVubGlua2VkQXJyYXlQ
cm9maWxlPiBtX2FycmF5UHJvZmlsZXM7CiAKIHByb3RlY3RlZDoKICAgICBERUNMQVJFX1ZJU0lU
X0NISUxEUkVOOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODI1
NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDcgQEAgdm9pZCBVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpegogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY29kZUJsb2NrLT5jZWxsTG9jaygpIH07CiAgICAgICAgIG1fY29kZUJsb2NrLT5t
X2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2stPmFsbG9jYXRlU2hhcmVkUHJvZmlsZXMoKTsKICAgICAgICAgbV9jb2RlQmxvY2stPm1fbWV0
YWRhdGEtPmZpbmFsaXplKCk7CiAKICAgICAgICAgbV9jb2RlQmxvY2stPm1fanVtcFRhcmdldHMg
PSBXVEZNb3ZlKG1fanVtcFRhcmdldHMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAJKHJldmlzaW9u
IDI4MjU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFk
YXRhVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMCArNTUsMTAgQEAgdm9pZCBVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKCkKICAgICAgICAgICAgICAgICBidWZmZXJbaV0g
PSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBidWZmZXJbaV0gPSBvZmZzZXQ7IC8vIFdlIGFsaWduIHdoZW4gd2UgYWNjZXNzIHRo
aXMuCiAgICAgICAgICAgICB1bnNpZ25lZCBhbGlnbm1lbnQgPSBtZXRhZGF0YUFsaWdubWVudChz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgICAgICAgICAgb2Zmc2V0ID0gcm91bmRVcFRv
TXVsdGlwbGVPZihhbGlnbm1lbnQsIG9mZnNldCk7CiAgICAgICAgICAgICBBU1NFUlQoYWxpZ25t
ZW50IDw9IHNfbWF4TWV0YWRhdGFBbGlnbm1lbnQpOwotICAgICAgICAgICAgYnVmZmVyW2ldID0g
b2Zmc2V0OwogICAgICAgICAgICAgb2Zmc2V0ICs9IG51bWJlck9mRW50cmllcyAqIG1ldGFkYXRh
U2l6ZShzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZl
cltzX29mZnNldFRhYmxlRW50cmllcyAtIDFdID0gb2Zmc2V0OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaAko
cmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkTWV0YWRhdGFUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVubGlua2VkTWV0YWRhdGFUYWJsZSk7
CiAgICAgfQogCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ5dGVjb2RlPgorICAgIHVuc2lnbmVk
IG51bUVudHJpZXMoKTsKKworICAgIGJvb2wgaXNGaW5hbGl6ZWQoKSB7IHJldHVybiBtX2lzRmlu
YWxpemVkOyB9CisgICAgYm9vbCBoYXNNZXRhZGF0YSgpIHsgcmV0dXJuIG1faGFzTWV0YWRhdGE7
IH0KKwogcHJpdmF0ZToKICAgICBlbnVtIEVtcHR5VGFnIHsgRW1wdHkgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
ZXRhZGF0YVRhYmxlSW5saW5lcy5oCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Myw2ICs3MywxNCBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFVubGlua2Vk
TWV0YWRhdGFUCiAgICAgcmV0dXJuIHByZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF0rKzsKIH0K
IAordGVtcGxhdGUgPHR5cGVuYW1lIEJ5dGVjb2RlPgorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBV
bmxpbmtlZE1ldGFkYXRhVGFibGU6Om51bUVudHJpZXMoKQoreworICAgIGNvbnN0ZXhwciBhdXRv
IG9wY29kZUlEID0gQnl0ZWNvZGU6Om9wY29kZUlEOworICAgIEFTU0VSVCghbV9pc0ZpbmFsaXpl
ZCAmJiBvcGNvZGVJRCA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMSk7CisgICAgcmV0dXJuIHBy
ZXByb2Nlc3NCdWZmZXIoKVtvcGNvZGVJRF07Cit9CisKIEFMV0FZU19JTkxJTkUgc2l6ZV90IFVu
bGlua2VkTWV0YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoKQogewogICAgIGlmIChtX2lzRmluYWxp
emVkICYmICFtX2hhc01ldGFkYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjgyNTY1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwx
MyArMzEsMTggQEAKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCiAjaW5jbHVkZSAiU3Bl
Y3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2Vk
VmFsdWVQcm9maWxlOworCiB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1iZXJPZkJ1Y2tldHNBcmd1bWVu
dD4KIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKKyAgICBmcmllbmQgY2xhc3MgVW5saW5rZWRW
YWx1ZVByb2ZpbGU7CisKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQnVj
a2V0cyA9IG51bWJlck9mQnVja2V0c0FyZ3VtZW50OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbnVtYmVyT2ZTcGVjRmFpbEJ1Y2tldHMgPSAxOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgYnVja2V0SW5kZXhNYXNrID0gbnVtYmVyT2ZCdWNrZXRzIC0gMTsKQEAgLTIxMyw0
ICsyMTgsMTkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NpemU7CiB9OwogCitjbGFzcyBV
bmxpbmtlZFZhbHVlUHJvZmlsZSB7CitwdWJsaWM6CisgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUo
KSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHVwZGF0ZShWYWx1ZVByb2ZpbGUmIHByb2ZpbGUpCisg
ICAgeworICAgICAgICBTcGVjdWxhdGVkVHlwZSBuZXdUeXBlID0gcHJvZmlsZS5tX3ByZWRpY3Rp
b24gfCBtX3ByZWRpY3Rpb247CisgICAgICAgIHByb2ZpbGUubV9wcmVkaWN0aW9uID0gbmV3VHlw
ZTsKKyAgICAgICAgbV9wcmVkaWN0aW9uID0gbmV3VHlwZTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uIHsgU3BlY05vbmUgfTsKK307CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjgyNTY1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDY5LDcgKzEwNjksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBwb3BMZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqKTsKICAgICAgICAg
dm9pZCBwcmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oVmFyaWFibGVF
bnZpcm9ubWVudE5vZGUqLCBSZWdpc3RlcklEKiBsb29wU3ltYm9sVGFibGUpOwogICAgICAgICBp
bnQgbGFiZWxTY29wZURlcHRoKCkgY29uc3Q7Ci0gICAgICAgIFVubGlua2VkQXJyYXlQcm9maWxl
IG5ld0FycmF5UHJvZmlsZSgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFyc2VyRXJyb3Ig
Z2VuZXJhdGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI4MjU2NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpA
QCAtNDEzLDYgKzQxMywxMSBAQCBtYWNybyBtZXRhZGF0YShzaXplLCBvcGNvZGUsIGRzdCwgc2Ny
YXRjCiAgICAgbXVsaSBzaXplb2YgJW9wY29kZSU6Ok1ldGFkYXRhLCBzY3JhdGNoICMgc2NyYXRj
aCAqPSBzaXplb2YoT3A6Ok1ldGFkYXRhKQogICAgIGFkZGkgc2NyYXRjaCwgZHN0ICMgb2Zmc2V0
ICs9IHNjcmF0Y2gKICAgICBhZGRwIG1ldGFkYXRhVGFibGUsIGRzdCAjIHJldHVybiAmbWV0YWRh
dGFUYWJsZVtvZmZzZXRdCisgICAgIyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YoTWV0YWRh
dGEpLCBkc3QpCisgICAgY29uc3QgYWRkZXIgPSAoY29uc3RleHByIChhbGlnbm9mKCVvcGNvZGUl
OjpNZXRhZGF0YSkpKSAtIDEKKyAgICBjb25zdCBtYXNrID0gfmFkZGVyCisgICAgYWRkcCBhZGRl
ciwgZHN0CisgICAgYW5kcCBtYXNrLCBkc3QKIGVuZAogCiBtYWNybyBqdW1wSW1wbChkaXNwYXRj
aEluZGlyZWN0LCB0YXJnZXRPZmZzZXRSZWcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCShyZXZpc2lvbiAyODI1NjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5MTYsNiArMTkxNiw5IEBAIHB1YmxpYzoKIAogICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJl
RGF0YSogcmFyZURhdGEoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0
YS5kZWNvZGUoZGVjb2Rlcik7IH0KIAorICAgIHVuc2lnbmVkIG51bVZhbHVlUHJvZmlsZXMoKSBj
b25zdCB7IHJldHVybiBtX251bVZhbHVlUHJvZmlsZXM7IH0KKyAgICB1bnNpZ25lZCBudW1BcnJh
eVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1BcnJheVByb2ZpbGVzOyB9CisKIHByaXZh
dGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1YWxSZWdp
c3RlciBtX3Njb3BlUmVnaXN0ZXI7CkBAIC0xOTQ3LDYgKzE5NTAsOSBAQCBwcml2YXRlOgogICAg
IGludCBtX251bUNhbGxlZUxvY2FsczsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzOwogCisgICAg
dW5zaWduZWQgbV9udW1WYWx1ZVByb2ZpbGVzOworICAgIHVuc2lnbmVkIG1fbnVtQXJyYXlQcm9m
aWxlczsKKwogICAgIENhY2hlZE1ldGFkYXRhVGFibGUgbV9tZXRhZGF0YTsKIAogICAgIENhY2hl
ZFB0cjxDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YT4gbV9yYXJlRGF0YTsKQEAgLTIxNTEsOCArMjE1
Nyw5IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2UKIAogICAgICwg
bV9tZXRhZGF0YShjYWNoZWRDb2RlQmxvY2subWV0YWRhdGEoZGVjb2RlcikpCiAgICAgLCBtX2lu
c3RydWN0aW9ucyhjYWNoZWRDb2RlQmxvY2suaW5zdHJ1Y3Rpb25zKGRlY29kZXIpKQotCiAgICAg
LCBtX3JhcmVEYXRhKGNhY2hlZENvZGVCbG9jay5yYXJlRGF0YShkZWNvZGVyKSkKKyAgICAsIG1f
dmFsdWVQcm9maWxlcyhjYWNoZWRDb2RlQmxvY2subnVtVmFsdWVQcm9maWxlcygpKQorICAgICwg
bV9hcnJheVByb2ZpbGVzKGNhY2hlZENvZGVCbG9jay5udW1BcnJheVByb2ZpbGVzKCkpCiB7CiB9
CiAKQEAgLTIzMjgsNiArMjMzNSw4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxv
Y2s8Q29kZUIKICAgICBtX2NvZGVHZW5lcmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5l
cmF0aW9uTW9kZTsKICAgICBtX2NvZGVUeXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CiAgICAg
bV9oYXNDaGVja3BvaW50cyA9IGNvZGVCbG9jay5tX2hhc0NoZWNrcG9pbnRzOworICAgIG1fbnVt
VmFsdWVQcm9maWxlcyA9IGNvZGVCbG9jay5tX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpOworICAgIG1f
bnVtQXJyYXlQcm9maWxlcyA9IGNvZGVCbG9jay5tX2FycmF5UHJvZmlsZXMuc2l6ZSgpOwogCiAg
ICAgbV9tZXRhZGF0YS5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fbWV0YWRhdGEuZ2V0KCkp
OwogICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX3JhcmVEYXRhLmdl
dCgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>